回答
您可以使用Excel中的狀態欄要做到這一點:
Application.StatusBar = "status message"
這裏是如何實現這樣一個例子:http://www.vbaexpress.com/kb/getarticle.php?kb_id=87
下面是從網站(添加換行的代碼使更容易閱讀):
Sub StatusBar()
Dim x As Integer
Dim MyTimer As Double
'Change this loop as needed.
For x = 1 To 250
'Dummy Loop here just to waste time.
'Replace this loop with your actual code.
MyTimer = Timer
Do
Loop While Timer - MyTimer < 0.03
Application.StatusBar = _
"Progress: " & x & " of 250: " & Format(x/250, "Percent")
DoEvents
Next x
Application.StatusBar = False
End Sub
UPDATE: 我想補充一點,updat狀態欄會在性能上產生相當大的影響(實際上相當多),所以您應該只在適當的時間間隔更新它。下面是我的意思的例子(我用MOD這裏,以確保我們只增加各1000):
Sub test()
Dim i As Long
Dim temp As String
For i = 1 To 1000000
temp = "testing 123, testing 123"
If i Mod 1000 = 0 Then
Application.StatusBar = "Processing " & i & "/1,000,000..."
End If
Next
Application.StatusBar = "Ready"
End Sub
另外請注意,要文字重置爲「就緒」,否則它會被剩下來,好象它在循環中。
下面的文章有許多這樣做的方法:http://oreilly.com/pub/h/2607
我想你應該是展示一個進步的形式最好的選擇。這可以包括進度條和文本更新以保證用戶的安全。
我不知道你想用你的解決方案走多遠,但你可以利用RTD function。這樣你可以直接在工作表中放置一個狀態消息。但是它需要開發一個COM Automation服務器,這個服務器並不複雜(可以用.NET或VB6或C++或Delphi編寫),但是會在生產(部署,支持,代碼控制等)時導致問題。
我一直堅持Walkenbach's progress form我的加載項
看起來很酷且安全。但是,我大部分時間都在使用三個屏幕以及我的用戶。此刻,當我下載示例時,彈出式窗口有時會打印到具有活動Excel的窗口上。任何想法如何解決,因爲你知道這件作品相當好? – Jerome
@jeromeG當你說三個屏幕時,你的意思是你有3個文件在一個Excel實例中打開,分佈在三個屏幕上?或者3個獨立的Excel運行實例? – brettdj
我的意思是我有3個物理屏幕,並且在一個屏幕上打開一個Excel實例。有趣的是,當我打開VBE時,彈出窗口將始終顯示在顯示VBE的屏幕上。如果我將VBE移動到另一個屏幕,則彈出窗口將在下一次顯示。 Excel所在的屏幕不影響任何內容。關閉VBE後,彈出窗口繼續顯示在VBE所在的最後一個屏幕上。那麼問題是,當實際的Excel在左邊的屏幕上時,我不希望彈出窗口離開它兩個屏幕:D – Jerome
事情我一次也就是創建一個名爲「暗戰」一個額外的標籤。 每消耗一次循環後,我將下面的代碼添加到更新的文本信息中。
儘管文本有時會變得太快,但更改的顏色條顯示用戶腳本仍在運行。您必須首先定義AlertColor,值爲6.
Sheets("Running").Select 'Show the running page
Range("B18").Value = "Importing ABC......"
Cells(18, 2).Interior.ColorIndex = AlertColour
AlertColour = AlertColour + 1
If AlertColour > 8 Then AlertColour = 6
Application.ScreenUpdating = True
Application.ScreenUpdating = False
- 1. 在asp中的漫長過程
- 2. 用戶在網站上觸發一個漫長的過程
- 3. 如何在漫長的過程中停止旋轉光標
- 4. 腳本殺死過漫長的過程
- 5. 如何處理TeamCity中的漫長過程?
- 6. 漫長的過程:意外延遲
- 7. 如何從應用程序中通過用戶的方式通知用戶
- 8. 查找ASP.Net超時原因(在漫長的操作過程中)
- 9. 如何在英特爾®TBB中有漫長的等待線程?
- 10. asp.net - 如何在一個漫長的過程中異步更新文本框
- 11. 如何通知用戶會話過期
- 12. 等待一個漫長的過程,仍然在更新UI
- 13. 如何在android中通過程序禁用消息通知?
- 14. 這個漫長的
- 15. 對於Emacs,在Android中使用CTRL鍵的漫長旅程
- 16. Twilio - 通過向用戶發送遠程通知邀請用戶
- 17. 如何計算這漫長的遞歸
- 18. 如何通過使用SSE關閉應用程序時通知我的用戶?
- 19. 如何知道用戶是否處於漫遊狀態
- 20. 如何通知用戶會話即將在asp.net中過期?
- 21. 如何在用戶取消SSO過程時通知iphone應用程序?
- 22. 如何通知網絡中的用戶
- 23. 如何知道用戶何時通知過?
- 24. 如何知道PID的過程中遇到通過遠程ssh
- 25. Salesforce:如何通知用戶
- 26. 如何在應用程序的特定時間通知用戶
- 27. 從ASP.NET運行一個漫長過程的方法頁面
- 28. ASP.NET生命週期和漫長的過程
- 29. 如何不讓用戶通過點擊通知來打開應用程序?
- 30. C#:在漫長的過程中顯示模態進度對話框
我使用窗體顯示進度信息。 [看我對這個問題的回答] [1] [1]:http://stackoverflow.com/questions/8360981/find-worksheet-name-and-row-number-for-an-excel-workbook/8367240#8367240 –
除了其他人提出的建議之外,我還建議在執行過程中更改光標:Application.Cursor = xlWait – JimmyPena