- ベストアンサー
エクセル auto_open()で使う変数の事で
よろしくお願いします 最近マクロの勉強を始めました auto_open()内でPrivate Sub Worksheet_Change(ByVal Target As Range)内の変数を 使うにはどうしたらいいですか? auto_open()内で変数が定義されていませんと表示されてマクロが止まります
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
関連するQ&A
- エクセル デバッグできるのとできないのがある
シートイベントについて教えてください。 シートモジュールに --------------------------------------------------------- Option Explicit Private Sub Worksheet_Activate() MsgBox "" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox "" End Sub Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "" End Sub --------------------------------------------------------- と記載した時に、 F8で動かせるのは、Worksheet_Activateだけなのですがなぜでしょうか? ほかのイベントは、F8で実行させても、OSの音が鳴るだけで、マクロの実行はされません。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel 関数をまたいだTargetの使用
excel2013 OS はwindows8を使用しています。 Excelのマクロで、以下のコードについて質問です。(コード内の・・・は省略の意) Private Sub Worksheet_Change(ByVal Target As Range) Dim ・・・・・・・ ・ ・ If Target.Value = ・・・・・ Call myfunction End If End Sub Sub myfunction() If 条件 Then Target.Offset(0,1).Value = "aaa" End If End Sub このマクロのPrivate Sub Worksheet_Change(ByVal Target As Range)を実行するとエラーが 出ます。エラーの内容は「オブジェクト変数またはwithブロック変数が設定されていません」 となり、 Target.Offset(,1).Value = "aaa" の行が黄色く表示されます。 myfuncton内で使用しているTargetが何なのかがわからないというエラーだと理解しています。 そこで私は以下の2つを試しました。 1つめはうまくいかず、2つめは何か2度手間のような感じがするのですが、正常動作する ようです。 そこで質問なのですが、Targetをプロシージャをまたいで利用したい場合に一般的に用いら れている手法などがあれば教えて頂きたいです。 1つめ・・Targetをプロシージャをまたいで使えるようにコードの一番上の部分 、つまり、Private Sub Worksheet_Change(ByVal Target As Range)の一行上の 部分にDim Target As Range と宣言してみました。が、これはうまくいきませんでした。 2つめ・・適当な(この場合e)変数を宣言し、プロシージャをまたいで使用する。 Dim e As Range Private Sub Worksheet_Change(ByVal Target As Range) Dim ・・・・・・・ ・ ・ If Target.Value = ・・・・・ Set e = Target Call myfunction End If End Sub Sub myfunction() If 条件 Then e.Offset(0,1).Value = "aaa" End If End Sub 以上何か良い方法があれば教えて頂きたいです。また不明な点があれば ご質問ください
- ベストアンサー
- Excel(エクセル)
- Excel VBA イベントプロシージャを2つ記述する(基本です)
基本的な事なのですが、Excelのイベントプロシージャで2つプログラムを作るにはどうやって記述すればよいのでしょうか? 具体的には、worksheetのchangeイベントで、セルC5の値を変えた時と、セルG7の値を変えた時の2通りのマクロを作成したいのです。 Private Sub Worksheet_Change(ByVal Target As Range) C5を変えた時の処理 End Sub Private Sub Worksheet_Change(ByVal Target As Range) G7を変えた時の処理 End Sub このように書けばよいのでしょうか?そうするとTargetがかぶっておかしくなる気がします。。 お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?
VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロ
セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub
- ベストアンサー
- Excel(エクセル)
- エクセル95のマクロ
エクセル95で Private Sub Worksheet_Change(ByVal Target As Range) というのは使えるんでしょうか? リターン押したときに移るセルを操作したいので 代わりになるものでもあれば教えて頂きたいです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Range("B19:T19").Select
よろしくお願いします Private Sub Worksheet_Change(ByVal Target As Range) 内のマクロで Range("B19:T19").Selectの 19をTarget.Rowで表現すると Range("B19:T19").Selectをどう直したらいいでしょうか? こんな簡単なことが分かりません どなたか教えてください
- ベストアンサー
- Excel(エクセル)
- エクセルVBAに関して
VBAの知識があまりないので教えて頂きたいのですが、セルの内容が変更されたら マクロが実行される Private Sub Worksheet_Change(ByVal Target As Range) というのがあるかと思います。 セルに書かれた関数によって、セルの内容が変化したときにマクロが実行されるVBA関数はあるのでしょうか?
- 締切済み
- Visual Basic
- エクセル マクロ 初心者です
エクセルマクロ初心者です。 以下の2つの Private Sub Worksheet_Change(ByVal Target As Range)を1つのシートで実行させたいのですが、 当方、初心者なので組み合わせ方が分かりません。 よろしくお願いします。 ===No1=== Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = StrConv(Target, vbUpperCase) Application.EnableEvents = True End Sub ===No2=== Private Sub Worksheet_Change(ByVal Target As Range) Dim Ans As Integer If Target.Count = 1 Then Ans = MsgBox("コピーは禁止!!", vbCritical) MsgBox "データを消去します。" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If If Target.Count = 1 Then Exit Sub Else MsgBox “複数セルのコピー禁止!" With Application .EnableEvents = False .Undo .EnableEvents = True End With End If End Sub ------------ 上記の2つを1つのシートで動作させたいのですが、うまくいきません。 単体では、動作します。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロのchangeイベントについて
こんばんわ changeイベントを使ってみようと思い、下記のマクロを作ってみたのですが、どうしても動きません。 Private Sub Worksheet_Change(ByVal Target As Range) Set Target = Range("b4") Application.DisplayAlerts = False Dim i As Long Workbooks.Open Filename:="c:\osaruPKsarch\sarch.xls" For i = 1 To 5 Step 1 Cells(3, i + 50) = Cells(7, i + 50) Next i End Sub なぜ動かないのかもわかりませんToT アドバイスの程よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
補足
おはようございます 早速教えていただきありがとうございます BOOKが初めてOPENされた時だけやることがあって、ネットで検索したらauto_openに 書けばいいと分かりました でも、よく考えて見るとオープンしたばっかりなのに、TargetはWorksheet_Change内の変数なんか エクセルは知りませんね マクロがこんなに難しいとは思いませんでしたが、ほぼ9割方完成していて あとは、エラー処理とauto_openだけなのでもう少し頑張ってみます 60過ぎのおっさんにはちょっときついです イベントドリブンを勉強してみます ありがとうございました