- ベストアンサー
ExcelVBAで特定のサブルーチンを無効にする方法
- ExcelVBAで特定のサブルーチンを無効にする方法を教えてください。
- シートの列(C)のセルを順番に更新するマクロを作成した際に、他のサブルーチンが起動してしまう問題が発生しています。
- サブルーチンの無効化方法や特定の列(B)のセルが更新されたときにサブルーチンを実行する方法について知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
イベントを停止する方法。 Application.EnableEvents = False Application.EnableEvents = True 必ず、二つセットで使用してください。 そうしないと、次から、Worksheet_Change などのイベントが起動しなくなります。
その他の回答 (2)
- ki-aaa
- ベストアンサー率49% (105/213)
>個別のイベント毎に指定する方法もあるのでしょうか 私の知る限りでは、無いと思います。 でも、あるという回答があって、恥をかくかも!!!
お礼
わかりました。 どうもありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
2に関して、Worksheet_Changeにどのように記述していますか? Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target If r.Column = 2 Then MsgBox r.Address '処理 End If Next End Sub データの変更量などにもよると思いますが、こんな感じでもそれ程遅いとは思いませんけど。
お礼
回答ありがとうございます。 Worksheet_Cange の中身は、こんな感じです。 i = Target.Cells.Row j = Target.Cells.Column If j = 2 Then Data1 = Cells(i, j).Value (中略) Cells(i, j + 1).Value = Data2 End If でもマクロ(D)の方では正確には列(C)だけでなく12個の列×50行くらいのセルを更新するので600回くらいWorksheet_Changeが起動してしまうので遅くなっています。
お礼
できました。ありがとうございます。全てのイベントを停止してしまえば大丈夫ですね。(これで問題ないのですが、参考までに)個別のイベント毎に指定する方法もあるのでしょうか?