你可以嘗試一個閃屏方法。
創建一個新的工作表,說StartUp
並使它看起來是這樣的:
在這張照片我有隱藏的網格線等,改變背景和字體,然後包括兩個矩形鏈接到潛艇。
潛艇的工作方式:
1)在標準代碼模塊(其中包含要(有時Report
子)運行),我已經宣佈在模塊的頂部的變量:
Public TimeOut As Boolean
2)在用於我的啓動片的代碼模塊我有這兩個潛艇(鏈接至相應的形狀):
Sub RunReport()
Sheets("StartUp").Visible = xlSheetHidden
TimeOut = False
Report 'sub to launch
End Sub
Sub UseWorkbook()
Sheets("StartUp").Visible = xlSheetHidden
TimeOut = False
End Sub
3)在用於模塊我:
Private Sub Workbook_Open()
Dim start As Double
TimeOut = True
Sheets("StartUp").Visible = xlSheetVisible
Sheets("StartUp").Activate
start = Timer
Do While Timer < start + 60
DoEvents
If TimeOut = False Then Exit Sub
Loop
Sheets("StartUp").Visible = xlSheetHidden
Report
End Sub
當您打開Open
事件被激發工作簿,顯示啓動畫面。然後這個Workbook_Open
sub進入一個60秒的循環,監測變量TimeOut
。如果它變得錯誤(通過按下飛濺屏幕按鈕) - 子結束(用隱藏啓動屏幕的形狀的事件處理程序)。否則,在60秒後,啓動畫面自動隱藏,Report
子自動運行。
最後備註:需要DoEvents
來監視TimeOut
變量,並允許其他事件處理程序觸發,因此您不希望簡單地休眠60秒。儘管如此,您仍然可以在Do-While
循環中引入1秒睡眠,從而使用@teepee的出色建議。每秒鐘檢查一次TimeOut
就足夠了。
你有沒有試過在你的代碼中使用'Public Declare Sub Sleep Lib「kernel32」(ByVal dwMilliseconds As Long)'? – teepee
您可能需要一個用戶表單而不是消息框。 –
MsgBox是模態,除非響應,否則不能執行其他宏。您可以在MsgBox for SendKeys之前Shell一個vbs文件,但它不可靠。所以你最好使用UserForm並在Initialize上使用Application.OnTime調用正常模塊中的Sub開始倒計時並關閉UserForm。 – PatricK