工作簿关闭后设置为工作簿的变量的状态

时间:2014-11-13 18:33:12

标签: excel-vba vba excel

我有一个简单的问题(我认为)。让我们说我在Book1的标准模块中将一个全局变量设置为一个开放(不同)的工作簿:

Public Sub InitGlobals()
    Set gwkb = Workbooks("book2.xlsx")
End Sub

现在我手动关闭book2.xlsx。 gwkb的状态是什么?这是我在即时窗口中运行各种测试时得到的结果:

?gwkb is nothing
False
?isempty(gwkb)
False
?isnull(gwkb)
False

但是,如果我要求gwkb的任何属性,例如gwkb.Name,我会收到自动化错误。

我的问题是:有没有办法测试这种情况,而不是诉诸某种" On Error Resume Next"测试?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果 Book2 最初处于打开状态且可能已关闭,则循环打开的图书将无法找到它:

Public Sub InitGlobals()
    Dim gwkb As Workbook, wb As Workbook
    Set gwkb = Workbooks("Book2.xlsx")
    gwkb.Close
    For Each wb In Workbooks
        If wb.Name = "Book2" Then
            MsgBox wb.Name & " is open "
        End If
    Next wb
End Sub