我正在尝试将一些参考数据存储在字符串数组中,然后使用它来与另一个字符串数组进行比较。但是,代码无效,因为我收到“下标超出范围”错误(请参阅下面的代码注释)。
Sub StoreBaseReferences()
Dim cell As Range
Dim val As Variant
Dim stringValues() As String
Dim i, rowCounter, columnCounter As Integer
rowCounter = 0
columnCounter = 0
For i = 2 To Sheets("sheet").UsedRange.rows.Count
For Each cell In Range(Cells(i, 2), Cells(i, 4))
stringValues(rowCounter, columnCounter) = cell.Value 'this is throwing the subscript ouf of range error
columnCounter = columnCounter + 1
Next cell
rowCounter = rowCounter + 1
columnCounter = 0
Next i
MsgBox (stringValues(0, 0))
End Sub
这里缺少什么?
答案 0 :(得分:1)
您要声明1d数组Dim stringValues() As String
但尝试将其用作二维数组stringValues(rowCounter, columnCounter)
此外,您没有声明数组的大小,而是尝试使用它。在VBA中,您必须确保在声明时告诉数组的大小。
为delcare计算数组能够存储的元素数
Dim stringArray(0 to 10)
或Dim stringArray(10)
当迭代计数器从0
开始。
使用ReDim stringValues()
可以在稍后阶段调整边界大小。
该主题过于宽泛,无法在一个答案中查看,请查看链接以了解如何标注数组
答案 1 :(得分:1)
VBA中的数组需要使用预期使用的元素数量来确定尺寸。您已定义维度,但未指定将添加多少个元素。尝试在For循环之前添加以下行:
ReDim stringValues(Sheets("sheet").UsedRange.Rows.Count, 3)