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