我有一个以前用代码创建的工作簿对象,都很好。
然而,为了正确的错误处理,如果工作簿由于任何原因被关闭,即使不太可能,我想在进一步的代码执行之前检查这一点。
监 windows 口通过使用<no variables>
直接输入(用于模拟)关闭后显示工作簿:
的数据
但是,似乎没有什么可以检查工作簿对象是否为空:
Debug.Print IsObject(dWorkbook) ' returns true > expected as obj as such still exists
Debug.Print IsNull(dWorkbook) ' returns false
Debug.Print IsEmpty(dWorkbook) ' returns false
Debug.Print TypeName(dWorkbook) ' returns object > expected
If dWorkbook Is Nothing Then ' steps into Else
Debug.Print "is Nothing"
Else
Debug.Print "something"
End If
字符串
感谢您在这里提供的建议,以找到一种检查工作簿对象是否包含内容的方法。
3条答案
按热度按时间j1dl9f461#
这里有一个方法。
字符串
如果手动关闭其他工作簿会停止代码,则使用此方法。只需向工作簿添加一个Userform,以便您能够手动关闭其他工作簿。
*请注意 * 添加userform只是为了手动测试代码,在真实的场景中,不需要添加userform。
型
shyt4zoc2#
检查工作簿是否超出范围(“意外”关闭)
编辑
TypeName
function来获取变量的各种“状态”:字符串
型
也就是说,对于那些欣赏微妙差异的人来说:
Nothing
,意味着工作簿未设置,它也将返回False
。型
或者,更实际一点:
Nothing
,并且没有超出作用域。型
初始发布
测试(用法)
型
函数
型
2j4z5cfb3#
由于工作簿没有被你的代码关闭,我想变量没有被重置。你可以使用这样的check-Routine:
字符串
然后你可以像这样使用它:
debug.print isWbValid(dWorkbook)