gpt4 book ai didi

vba - 如何在工作簿第一次打开时运行宏?

转载 作者:行者123 更新时间:2023-12-04 20:14:57 26 4
gpt4 key购买 nike

我有一个工作簿,它运行一个宏来显示用户窗体 Open1 打开时,使用(非常基本的)代码:

Private Sub Workbook_Open()

Open1.Show

End Sub

这可以很好地完成工作 - 每次我打开工作簿时,都会弹出用户表单并完美运行。

但是,我希望用户窗体仅在第一次打开工作簿时出现。有没有办法让这种情况发生?

最佳答案

您可以使用第一次打开电子表格时删除的虚拟模块...

就像是:

If ModuleExists("DummyModule") Then
Open1.Show
DoCmd.DeleteObject acModule, "DummyModule"
End If

Function ModuleExists(strModuleName As String) As Boolean
Dim mdl As Object
For Each mdl In CurrentProject.AllModules
If mdl.Name = strModuleName Then
ModuleExists = True
Exit For
End If
Next
End Function

更新:如前所述,Excel vba 中不使用 DoCmd。这将教我在不测试的情况下编写代码!
以下更新的代码将起作用,但为了访问 VB 环境,需要信任 excel。

信任中心>宏设置中有一个设置,您可以勾选此代码以在开发人员宏设置下工作

因此,这可能不是要走的路,因为它打开了安全问题的可能性......
Sub RemoveModule()
If ModuleExists("DummyModule") Then
Open1.Show
Dim vbCom As Object: Set vbCom = Application.VBE.ActiveVBProject.VBComponents
vbCom.Remove VBComponent:=vbCom.Item("DummyModule")
End If
End Sub

Function ModuleExists(strModuleName As String) As Boolean
Dim mdl As Object
For Each mdl In Application.VBE.ActiveVBProject.VBComponents
If mdl.Name = strModuleName Then
ModuleExists = True
Exit For
End If
Next
End Function

关于vba - 如何在工作簿第一次打开时运行宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com