我试图了解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
答案 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