在Excel 2011中使用UserForm时,对象_Workbook的方法“关闭”失败

时间:2014-02-18 18:09:20

标签: excel-vba excel-2011 vba excel

我已经看过这两个帖子了:

Closing a Userform with Unload Me doesn't work

Error when closing an opened workbook in VBA Userform

他们都建议当你想从表格代码中关闭文件时,你需要先卸载表格(使用卸载我)。但是,如果我卸载,我有一个被取消引用的全局数组。

看看下面我的代码(在分配global_int(0,0)进行测试时崩溃)。除非我删除数组,否则我无法卸载表单。这真的是解决这个问题的唯一方法吗?

创建一个新的Excel文件。在其中,创建一个Userform。在此基础上,使用以下Click事件代码和全局声明创建一个Command Button:

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上工作,所以我想尽可能避免完全重构。

感谢。

1 个答案:

答案 0 :(得分:0)

基于我能理解的是你有一个userForm并且代码在那里。您无法从userForm代码中卸载用户表单,并希望其余代码能够正常工作。一种选择是将代码写入单独的模块中。调用用户表单从那里运行