2012-01-17 83 views
1

我在Access 2003和VBA中做了一件事。我做了很多次迭代,有時候會發生一些事情,我想暫停並通知用戶,但不是使用MsgBox,而是使用文本字段。避免在Access 2003中忙於等待

因此,我打印了一條消息,並使用循環檢查全局「hold」布爾值。通過DoEvents,Windows檢查KeyDown,如果存在,則將hold設置爲False,並繼續迭代。

但是,我懷疑有更好的辦法,因爲這不是一個「忙等待」的例子嗎?雖然它不是「繁忙」,只是一個布爾檢查,但它足夠忙碌,我的電腦可以開始發出聲音,並且整體印象不夠強烈。

有沒有辦法等待(什麼也不做),然後繼續按鍵中斷?

+0

這是可能的,但我不想彈出消息框,因爲它具有破壞性。想象一下,例如,如果你想打C(如「繼續迭代」)10或15次。我確信有更好的方法。 – 2012-01-18 05:03:40

+0

@EmanuelBerg你的解決方案似乎很好,我明白你的意思是通過不斷的布爾檢查使機器在某種意義上處於忙碌狀態,不幸的是,這可能是等待和檢查關鍵事件的最佳方式 – 2012-01-18 08:49:58

+0

如果您顯示一些信息給用戶,並想等待「按鍵中斷」,爲什麼按Enter鍵關閉MsgBox不可接受? – mischab1 2012-01-20 20:35:22

回答

1

您不必使用msgbox,您可以使用其上的文本框和相應的代碼來定義自己的窗體。用acDialog的參數打開這個表單,它會停止與msgbox相同的代碼

+0

我沒有使用MsgBox。事情就是這樣:如果我是,暫停會是隱含的,對嗎?你的解決方案聽起來像製作我自己的MsgBox。我沒有看到這個目的,因爲如果我想要一個MsgBox,爲什麼我不使用內置的MsgBox? (或者,也許我誤解了你?)我很高興將日誌輸出轉儲到文本字段中,只是有時候我想停止執行並等待輸入。全局變量和「忙等待」循環實現了這一點,但正如我所說,我對這個解決方案並不滿意。 – 2012-01-18 05:00:02