而不是等待一段固定的時間,首次點擊時禁用命令按鈕。然後執行長時間運行的操作,然後再次啓用命令按鈕。
假設命令按鈕的名稱是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
我現在意識到,這就是你首先要求的。對不起,我很厚。
我試過這個,只是試了一次只是要確定被禁用,仍執行每「長時間運行代碼」按鈕按下。 – Elias
嗯。在「長時間運行的代碼」完成之前,「長時間運行的代碼」是否將控制權返回給「cmdToExcel_Click」?如果您需要檢查,請在'cmdToExcel_Click'中插入一箇中斷點並逐句通過代碼。 – HansUp
它沒有,焦點停留在一個單獨的控制。我甚至試圖在我的變量初始化之前放置'enable = false'! – Elias