Dim Sh_Temp As Worksheet
Set Sh_Temp = ThisWorkbook.Sheets("Temp")
lRow = Sh_Temp.Cells(Rows.Count, 1).End(xlUp).Row
ReDim vArray(lRow - 1)
vArray = Sh_Temp.Range("A2:A" & lRow).Value2 ' Exclude Header Value in A1
当工作表中的值超过1时,上面的代码非常有效。 但是当只有一个值时,例如
Ref. No.
2.1.a
无法复制到数组中会出错
'输入不匹配'
答案 0 :(得分:1)
ReDim vArray(lRow - 1)
的需求在哪里?在vArray = Sh_Te...
,将自动设置边界。此外,如果只有一个值,那么它只返回一个值而不是一个数组。但是使用ReDim vArray(lRow - 1)
,您尝试在没有位置的数组中插入值
您可以选择像这样使用它:
Dim Sh_Temp As Worksheet
Set Sh_Temp = ThisWorkbook.Sheets("Temp")
lRow = Sh_Temp.Cells(Rows.Count, 1).End(xlUp).Row
Dim vArray As Variant
vArray = Sh_Temp.Range("A2:A" & lRow).Value2
如果只返回一个值,那么vArray
将不是数组,或者这样做:
Dim Sh_Temp As Worksheet, lRow As Long, vArray As Variant
Set Sh_Temp = ThisWorkbook.Sheets("Temp")
lRow = Sh_Temp.Cells(Rows.Count, 1).End(xlUp).Row
If lRow <= 2 Then
vArray = Array()
ReDim vArray(1 To 1, 1 To 1)
vArray(1, 1) = Sh_Temp.Range("A2").Value2
Else
vArray = Sh_Temp.Range("A2:A" & lRow).Value2
End If
然后vArray
无论如何都是2D数组。