我想知道在对其应用过滤器后列表中是否有任何元素。该列表是变体类型,似乎是一个问题。大多数建议都与post一致:但它对我不起作用。我做错了什么?
Dim message As Variant
Dim tempMessage As Variant
Dim a As Long
message = Split("AACP;CP;sBcp;ccffcp", ";")
tempMessage = Filter(message, "CP", False, vbTextCompare)
If IsNull(tempMessage) = True Then
Debug.Print "EMPTY"
Else
Debug.Print tempMessage(0)
End If
答案 0 :(得分:3)
你有几种方法:
VarType(tempMessage)
如果完全空白则为vbEmpty
。
VarType(tempMessage) And vbArray
如果是数组类型将是非零(即使零元素也是如此.VBA中允许零长度数组 )。我在逻辑上下文中使用了And
。
如果您已经建立了阵列,那么您可以猜测维度。 (VBA没有为此提供任何功能,但幸运的是,您应该从Filter
的文档中了解。
如果您已经确定变量是一个数组,那么使用UBound(tempMessage) - LBound(tempMessage) + 1
来获取元素的数量。