检查Variant对象的长度

时间:2014-12-10 08:25:06

标签: vba

我想知道在对其应用过滤器后列表中是否有任何元素。该列表是变体类型,似乎是一个问题。大多数建议都与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

1 个答案:

答案 0 :(得分:3)

你有几种方法:

  1. VarType(tempMessage)如果完全空白则为vbEmpty

  2. VarType(tempMessage) And vbArray如果是数组类型将是非零(即使零元素也是如此.VBA中允许零长度数组 )。我在逻辑上下文中使用了And

  3. 如果您已经建立了阵列,那么您可以猜测维度。 (VBA没有为此提供任何功能,但幸运的是,您应该从Filter的文档中了解。

    如果您已经确定变量是一个数组,那么使用UBound(tempMessage) - LBound(tempMessage) + 1来获取元素的数量。