在使用VBA for Excel编写自动化工具时,我遇到了这种情况。我编写了“关闭”命令按钮以及窗体右上角的“X”。两个代码都是相同的并且符合他们的目的。
我想知道,如果我在两个子程序中使用ActiveWorkbook.Close
方法关闭工作簿,那么如何查看同一个Excel工作表的VBA项目?
我正在使用Microsoft Office 2010。
以下是我的参考代码:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Thanks for using! Tool will now close.", vbInformation + vbOKOnly
Unload Me
ActiveWorkbook.Close
End If
End Sub
答案 0 :(得分:1)
Visual Basic for Applications存在于主机 ...应用程序中 - 此处为Microsoft Excel。
如果您打开了10个工作簿,Visual Basic编辑器(VBE)将在 Project Explorer 窗口中有10个VBA项目(Ctrl + R);关闭一个,将从VBE中删除其VBA项目 - 您刚关闭的工作簿中的VBA代码 !
有两种类型的VBA项目:一种是启用宏的工作簿(。xlsm),另一种是 Microsoft Excel加载项(。xlam) 。前者与工作簿一起生活和死亡;后者与应用一起生存并死亡。
如果您需要可以管理多个工作簿的代码,请考虑另存为(F12)加载项; ActiveWorkbook.Close
将关闭活动工作簿,然后仍然加载加载项......您仍然可以查看其VBA源。
如果您只想关闭表单,我建议您不要实现QueryClose
处理程序,并让表单自行关闭 - 并保持工作簿处于打开状态! 。 如果您要关闭另一个工作簿,我强烈建议您避免使用ActiveWorkbook
并使用Workbook
对象引用。