VBA事件:在运行代码之前使用工作簿\u open加载工作簿
我想在工作簿完成打开后运行VBA宏。我尝试使用工作簿_open,但此操作在工作簿完成打开之前运行。这对我不起作用,因为我需要像这样在每张纸上循环VBA事件:在运行代码之前使用工作簿\u open加载工作簿,vba,excel,Vba,Excel,我想在工作簿完成打开后运行VBA宏。我尝试使用工作簿_open,但此操作在工作簿完成打开之前运行。这对我不起作用,因为我需要像这样在每张纸上循环 Private Sub Workbook_Open() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets 'do stuff on each sheet Next ws End Sub 有人知道工作簿打开后是否会运行事件吗?或者对如何实现此目标有任何其他建议?尝试使用此工作
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
'do stuff on each sheet
Next ws
End Sub
有人知道工作簿打开后是否会运行事件吗?或者对如何实现此目标有任何其他建议?尝试使用此工作簿而不是Active工作簿:
Private Sub Workbook_Open()
Dim osht As Worksheet
For Each osht In ThisWorkbook.Worksheets
Debug.Print osht.Name
Next osht
End Sub
将代码放入工作簿\激活事件中。它发生在公开赛之后
Private Sub Workbook_Activate()
' Code goes here
End Sub
我有一个类似的问题,我解决了使用 从链接的MSDN库文章: 计划在将来的指定时间运行过程 (在一天中的特定时间或在特定时间之后) 已经过去) 在运行
DoStuff
过程之前,您可以尝试使用此方法为工作簿提供足够的打开时间:
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:01"), "DoStuff"
End Sub
确保DoStuff
程序不在工作表模块中:
Private Sub DoStuff()
'Implementation...
End Sub
时间可以调整,但一秒钟对我来说很满意。谢谢你的回复,因为某些原因,这根本没用。加载工作簿后,它不会启动此操作吗?这可能与安全设置有关吗?请尝试此工作簿\u激活而不是工作簿\u激活。这可能是安全问题。我刚刚在那个事件中测试了代码,它似乎在我的机器上运行得很好。似乎工作正常。我有一个可下载的电子表格,最初我写了一些关于开放事件的代码。我有一些代码试图检索工作表的最后一行,但它告诉我它是空的,我假设工作表在运行方法调用时没有100%加载。使用Activate时,它会等待整个工作表加载后再运行。谢谢你的提示。出于某种原因,这是失败的,告诉我宏dos不存在!“DoStuff”子模块或函数不得位于工作表模块中!是的,调用函数可以是@Robert;一个救命的答案:)只是一个简短的提示:无论您选择下面的答案是什么,代码都不能放在模块中,它必须位于VBA项目窗口中的
此工作簿中。(或者可能在工作表对象内部?)