Word VBA - IsEmpty总是返回false



我发誓这段代码昨天工作,但今天IsEmpty总是返回False,甚至在声明之后:

Sub TestSub()
Dim ThisArray() As Variant
MsgBox IsEmpty(ThisArray)
End Sub

我找到了另一个解决方案(如何检查vba宏空数组和感谢@ahuth),所以这只是出于好奇-为什么IsEmpty总是为我返回False ?

IsEmpty是检查Variant变量是否持有任何值的函数。变体可以保存任何类型的数据(数字、字符串、对象引用、布尔值、数组等等)。如果你给一个变量赋值,这个变量就会知道它当时持有的是哪种数据类型。然而,如果你只是声明一个变量,它被初始化为值Empty,你可以用IsEmpty来检查它(或者你可以使用函数Vartype,如果它返回0,这意味着空)。

所有其他变量类型都不是空的,因为它们在VBA中有一个初始值(0表示数字,")对于字符串,Nothing对于对象)。所有这些初始值都不是empty。考虑一下,只要VBA知道数据类型,isEmpty就返回False。变量数组不为空(其数据类型为"array of…")。

IsEmpty的主要原因是检查Excel中单元格的内容。如果单元格没有值,则返回true。然而,一次检查多个单元格总是返回false,即使所有单元格都是空的。

Dim s As String, l As Long, v As Variant, a() As Variant, r As Range
Debug.Print "String:  ", IsEmpty(s)
Debug.Print "Number:  ", IsEmpty(l)
Debug.Print "Variant: ", IsEmpty(v)
Debug.Print "Array:   ", IsEmpty(a)
Debug.Print "Object:  ", IsEmpty(r)

Set r = ActiveSheet.Range("A1")
Debug.Print "Cell:    ", IsEmpty(r)
Set r = ActiveSheet.Range("A1:A3")
Debug.Print "Cells:   ", IsEmpty(r)

显示(假设工作表为空)

String:       False
Number:       False
Variant:      True
Array:        False
Object:       False
Cell:         True
Cells:        False

相关内容

  • 没有找到相关文章

最新更新