2016-06-28 34 views
-1

生データの月間データダンプを初期化するために実行する必要があるVBAマクロがあります。これは正常に動作します。一時的に無効にするVBAのworksheet_change()

さらに、セルの値が変更されるたびに実行されるPrivate Sub Worksheet_Change()ステップがあります。これは正常に動作します。

私の初期化マクロには多くの変更が加えられているため、Private Sub Worksheet_Change()の発射を継続しています。初期化の実行が終了するまで無効にする方法はありますか?

答えて

2

を同じことを行うことができなかった理由を何らかの理由を見ることができないが、あなたが実際にあなたがより良いあなたの初期化マクロ自体の内部でこの設定を行うと、以下のように、エラーハンドラを使用したい、それをバックに設定を確認するために、マクロ終了

を初期化:

Sub InitializingMacro() 

    On Error GoTo ErrHandler 
    Application.EnableEvents = False 

    'Your code here... 

ErrHandler: 
    Application.EnableEvents = True 

End Sub 
1
application.enableevents = false 
+1

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿](レビュー/低品質の投稿/ 12835362) – gofr1

+0

@ gofr1注:ありがとうございます:)はいこれは非常に悪い答えです:D – Rosetta

+1

答えは私の意見では、これ以上の説明は必要ありません、実際には可能な唯一の答えです。質問自体は、手に入る前にgoogleの検索を提唱していません。 OPはコードを提供していないか、彼がした可能性のあるステップは... –

0

私はグローバル値bAlreadyinChangeを追加し、Trueに設定し、その後、Worksheet_Changeイベントの開始時に、それがすでに設定されています場合は、その値をチェックし、サブを終了し、そう...

Sub Worksheet_Change() 
    if bAlreadyinChange Then Exit Sub 
    bAlreadyinChange = True ' set this so any updates don't fire the event again 
    ' do whatever here 
    bAlreadyinChange = False 
End Sub 

これは、チェンジイベントを使用して、シートに好きな更新や調整をイベントを再帰的に発生させることなく適用できることを意味します。私はあなたがdisabile EVENTI

Application.EnableEvents = False

そしてによってTrueに戻ってそれを設定すると、一時的にしなければならないロゼッタのポストにApplication.EnableEventsを使用して

+1

この種のメソッドはuserformsのためのもので、ワークシート内では 'application.enableevents = false' –

関連する問題