VBA检查数组在特定位置是否有值

VBA检查数组在特定位置是否有值,vba,excel,Vba,Excel,我有一个名为alterArray()的数组,它会自动填充outlook中的值(工作正常)。数组最多有6个值,但有时数组只有3个值(因此alterArray(0-2)用值填充,但alterArray(3-5)为空) 例如,我如何检查alterArray(5)是否有值 多谢各位 考虑: Sub HowEmptyIsIt() Dim alterArray(0 To 5) As Variant alterArray(0) = "X" MsgBox IsEmpty(alterArr

我有一个名为
alterArray()
的数组,它会自动填充outlook中的值(工作正常)。数组最多有6个值,但有时数组只有3个值(因此
alterArray(0-2)
用值填充,但
alterArray(3-5)
为空)

例如,我如何检查alterArray(5)是否有值

多谢各位

考虑:

Sub HowEmptyIsIt()
    Dim alterArray(0 To 5) As Variant
    alterArray(0) = "X"
    MsgBox IsEmpty(alterArray(5))
End Sub
考虑一下:

Sub HowEmptyIsIt()
    Dim alterArray(0 To 5) As Variant
    alterArray(0) = "X"
    MsgBox IsEmpty(alterArray(5))
End Sub

要获取其实际尺寸,可以使用辅助函数:

Function GetActualDimension(arr As Variant) As Long
    Dim i As Long
    If IsEmpty(arr) Then Exit Function
    For i = LBound(arr) To UBound(arr)
        If IsEmpty(arr(i)) Then Exit For
    Next
    GetActualDimension = i - 1
End Function
您可以在主代码中利用该漏洞,如下所示:

Sub main()
    Dim alterArray As Variant

    MsgBox GetActualDimension(alterArray) '-> returns zero
    alterArray = Application.Transpose(Range("A1:A4").Value) ' fill your array
    MsgBox GetActualDimension(alterArray) '-> returns "actual" size
End Sub
要获取其实际尺寸,可以使用辅助函数:

Function GetActualDimension(arr As Variant) As Long
    Dim i As Long
    If IsEmpty(arr) Then Exit Function
    For i = LBound(arr) To UBound(arr)
        If IsEmpty(arr(i)) Then Exit For
    Next
    GetActualDimension = i - 1
End Function
您可以在主代码中利用该漏洞,如下所示:

Sub main()
    Dim alterArray As Variant

    MsgBox GetActualDimension(alterArray) '-> returns zero
    alterArray = Application.Transpose(Range("A1:A4").Value) ' fill your array
    MsgBox GetActualDimension(alterArray) '-> returns "actual" size
End Sub