2012-03-06 26 views
6

私はDo .. Whileループが2つあります。最初のFor ..ループは1からXまでカウントアップし、2番目のループはXから1にカウントダウンします。これは現在、無限に繰り返されています。Excel VBA:割り込みコードの実行( 'エスケープ'を打つことではない)

ここで、この無限ループに「中断」できるようにし、プログラムがループの中断時にXYZを実行するようにします。

Do .. Whileループと組み合わせてトグルボタンを使用しようとしましたが、前述のループが実行されている間は入力が受け付けられません。コードがループを実行している場合、ボタンの状態はクリックされても変更されません。

どのような提案も高く評価されています。

答えて

10

鍵はDoEventsをループに含めることです。これにより、コード実行中にボタンがクリックされるなどExcelが処理できるようになります

概要は次のとおりです。マクロにButtonClickを割り当てます。 Mainは、ボタンがクリックされるまで無期限に実行されます。

Option Explicit 
Dim bBreak As Boolean 

Sub ButtonClick() 
    bBreak = True 

End Sub 

Sub Main() 
    Dim X As Long 
    Dim i As Long 
    bBreak = False 

    Do While True 
     X = 1000 
     For i = 1 To X 
      If bBreak Then 
       Exit Do 
      End If 
      DoEvents 
     Next 

     For i = X To 1 Step -1 
      If bBreak Then 
       Exit Do 
      End If 
      DoEvents 
     Next 
    Loop 
    If bBreak Then XYZ 
End Sub 
+0

おかげさまで、ありがとうございます。 – Pieter

関連する問題