一定時間待機する代わりに、最初にクリックしたときにコマンド ボタンを無効にします。次に、長時間実行される操作を実行し、その後コマンド ボタンを再度有効にします。
コマンド ボタンの名前がcmdToExcelであると仮定すると...
Private Sub cmdToExcel_Click()
Me.txtNote.SetFocus
Me.cmdToExcel.Enabled = False
' replace next line
MsgBox "call long running code here"
Me.cmdToExcel.Enabled = True
Me.cmdToExcel.SetFocus
End Sub
コマンド ボタンを無効にする前に、別のコントロールに移動する必要があることに注意してくださいSetFocus
。Access では、コマンド ボタンがまだフォーカスされている間は無効にできないためです。
SetFocus
最後にコマンド ボタンに戻りたくないかもしれません--- 私はそれについて大げさな推測をしました。:-)
長時間実行されているプロセスが終了する前に、コード フロー制御がクリック イベント プロシージャに戻るようです。そのため、コマンド ボタンは時期尚早に再び有効になります。
その場合、Sleep
長時間実行されるコードを呼び出した後に、API 宣言を使用して一時停止を挿入できます。
Private Sub cmdToExcel_Click()
Me.txtNote.SetFocus
Me.cmdToExcel.Enabled = False
' replace next line
MsgBox "call long running code here"
Sleep 5000 ' 5 seconds
Me.cmdToExcel.Enabled = True
Me.cmdToExcel.SetFocus
End Sub
そもそもそれがあなたが求めていたものだと今気づきました。太っててごめんなさい。