• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Q>ExcelVBAで特定のサブルーチンを無効にするには?)

ExcelVBAで特定のサブルーチンを無効にする方法

このQ&Aのポイント
  • ExcelVBAで特定のサブルーチンを無効にする方法を教えてください。
  • シートの列(C)のセルを順番に更新するマクロを作成した際に、他のサブルーチンが起動してしまう問題が発生しています。
  • サブルーチンの無効化方法や特定の列(B)のセルが更新されたときにサブルーチンを実行する方法について知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

イベントを停止する方法。 Application.EnableEvents = False Application.EnableEvents = True 必ず、二つセットで使用してください。 そうしないと、次から、Worksheet_Change などのイベントが起動しなくなります。

abekkan
質問者

お礼

できました。ありがとうございます。全てのイベントを停止してしまえば大丈夫ですね。(これで問題ないのですが、参考までに)個別のイベント毎に指定する方法もあるのでしょうか?

その他の回答 (2)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.3

>個別のイベント毎に指定する方法もあるのでしょうか 私の知る限りでは、無いと思います。 でも、あるという回答があって、恥をかくかも!!!

abekkan
質問者

お礼

わかりました。 どうもありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

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 データの変更量などにもよると思いますが、こんな感じでもそれ程遅いとは思いませんけど。

abekkan
質問者

お礼

回答ありがとうございます。 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が起動してしまうので遅くなっています。