首页 > 解决方案 > 引用 1 个单元格时出现 Ubound 的 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

标签: arraysvba

解决方案


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

您可以检查您的变量var2(不是变量恕我直言的最佳名称)是否是一个数组并对其做出反应,例如:

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

推荐阅读