我已经看过这两篇文章了:
使用卸载我关闭用户表单不起作用
在 VBA 用户窗体中关闭打开的工作簿时出错
它们都建议,当您要从表单代码关闭文件时,您需要先卸载表单(使用卸载我)。但是,如果我卸载,我有一个被取消引用的全局数组。
看看下面的代码(在分配 global_int(0,0) 进行测试时崩溃)。除非删除数组,否则我无法卸载表单。这真的是解决这个问题的唯一方法吗?
创建一个新的 excel 文件。在其中,创建一个用户窗体。在此基础上,使用以下 Click 事件代码和全局声明创建一个命令按钮:
Private global_int(2, 10) As Integer
Private Sub CommandButton1_Click()
global_int(0, 0) = 23
Dim filename As String
Dim opened_workbook As Workbook
filename = Application.GetOpenFilename() ' User selects valid Excel file
Set opened_workbook = Application.Workbooks.Open(filename)
' File operations would occur here
Unload Me
opened_workbook.Close ' Exception thrown here
Dim test As Integer
test = global_int(0, 0)
MsgBox "If you got here, it worked!"
End Sub
我只是在改编别人的代码以在 Mac 上工作,所以如果可能的话,我想避免完全重构。
谢谢。
根据我能理解的是你有一个userForm,代码在那里。您不能从 userForm 代码内部卸载用户窗体,并期望代码的其余部分正常工作。一种选择是在单独的模块中编写代码。调用用户窗体以从那里运行