将单个值存储到dynamic数组中:types不匹配

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个值'Temp'时,但只有一个值,例如

 Ref. No. 2.1.a 

不能复制到数组,它会给出一个错误

'types不匹配'

ReDim vArray(lRow - 1)的需求在哪里? 在vArray = Sh_Te...边界将自动设置。 此外,如果只有一个值,那么它只会返回一个值,而不是一个数组。 但是用你的ReDim vArray(lRow - 1)你尝试在没有位置的数组中插入一个值。
你可以select像这样使用它:

 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都将是一个二维数组。