[英]VBA Events: load workbook before running code using workbook_open
我希望在工作簿完成打開后運行VBA宏。 我嘗試使用workbook_open,但這在工作簿完成打開之前運行。 這對我不起作用,因為我需要像這樣循環遍歷每張紙...
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
'do stuff on each sheet
Next ws
End Sub
有沒有人知道是否有一個事件在工作簿完成后才會運行? 或者就如何實現這一目標提出任何其他建議?
我有一個類似的問題,我用Application.OnTime解決了。
來自鏈接的MSDN Library文章:
安排程序在將來的指定時間運行(在特定時間或在特定時間段過后)。
在運行DoStuff
過程之前,您可以嘗試使用此方法為工作簿提供足夠的時間來打開:
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:01"), "DoStuff"
End Sub
確保DoStuff
過程不在工作表模塊中:
Private Sub DoStuff()
'Implementation...
End Sub
時間可以調整,但一秒鍾對我來說是令人滿意的。
將您的代碼放在Workbook_Activate事件中。 它發生在Open事件之后。
Private Sub Workbook_Activate()
' Code goes here
End Sub
嘗試使用ThisWorkbook而不是ActiveWorkbook:
Private Sub Workbook_Open()
Dim osht As Worksheet
For Each osht In ThisWorkbook.Worksheets
Debug.Print osht.Name
Next osht
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.