概念的には、これは可能であり、簡単な例で説明することができます。これは本質的にあなたが言及したコードのタイプです。
ユーザーフォームに2つのボタンがあるとします。これらのボタンは、それぞれプロシージャを開始(または再開)して停止します。もちろん
Option Explicit
Public isCancelled As Boolean
Public iVal As Long
Private Sub CommandButton1_Click()
Dim i As Long
If iVal = 0 Then iVal = 1 'Allows the user to resume if it's been "stopped"
isCancelled = False
For i = iVal To 100000
iVal = i
If i Mod 1000 = 1 Then
Debug.Print i
End If
If isCancelled Then
GoTo EarlyExit
Else
DoEvents
End If
Next
EarlyExit:
End Sub
Private Sub CommandButton2_Click()
isCancelled = True
End Sub
、私はここでやった「継続」オプションを実装する小ぎれいなトリックですが、それはあなたの手順の複雑さに応じて、ますます複雑になることがあり、それはなど、依存関係だと、あなたのフォームがある場合あなたはランタイムがいくつか時間である場合にも、あなたの手順を最適化するために見えるかもしれ
など、ランタイムエラーを導入するよう、ユーザーがこのような形で環境を変更しないことを確認する必要がありますvbModeless
を表示します。
はいこれは可能です –
ありがとうございました。皆さんはこの問題で私を多く助けました! – Nakahed