引用1个单元格时,Ubound发生VBA错误

时间:2018-12-20 07:59:00

标签: arrays vba

我试图了解VBA中的阵列,但是我有点挣扎,尤其是在这些行上。我不明白为什么,当我指的范围是一个或两个单元格时,UBound会出现错误匹配错误类型13。

Dim var2 As Variant
sArray2() As String
Dim i As Long
Dim range2 As Range

lastrow = Workbooks(Umsatzdatenbank).Sheets("Filter").Range("P" & _ 
Rows.Count).End(xlUp).Row
Set range2 = Workbooks(Umsatzdatenbank).Sheets("Filter").Range("P3:P" & _ 
lastrow)
var2 = range2.Value
ReDim sArray2(1 To UBound(var2))
For i = 1 To (UBound(var2))
sArray2(i) = var2(i, 1)
Next

1 个答案:

答案 0 :(得分:0)

当您将单个单元格的值分配给变量时,该变量将是单个值,而不是数组。这就是Excel / VBA的工作方式,您无法更改。

您可以检查变量var2(不是变量IMHO的最佳名称)是否为数组,并对其进行反应,例如:

var2 = range2.Value
If IsArray(var2) Then
    ReDim sArray2(1 To UBound(var2))
    For i = 1 To (UBound(var2))
        sArray2(i) = var2(i, 1)
    Next
Else
    ReDim sArray2(1 To 1)
    sArray2(1) = var2
End If