簡體   English   中英

VBA事件:使用workbook_open運行代碼之前加載工作簿

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM