2016-04-26 4 views
0
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 

は完璧に動作しますが、例えば一つの値だけがあるときストア単一の値:ワークシート「TEMP」 以上の1の値がある場合には上記のコード型の不一致

Ref. No. 
2.1.a 

を配列にコピーすることはできませんそれは

'型の不一致' ReDim vArray(lRow - 1)の必要性がある

+0

範囲は、次のような2D配列です。 'ReDim vArray(1、lRow-1)'、 'lrow-1'は決して0以下であってはなりません。 –

答えて

1

エラーになりますか? vArray = Sh_Te...では、境界が自動的に設定されます。また、値が1つだけの場合、配列ではなく値を返します。しかし、あなたの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 1つの値のみが戻された場合は配列にすることない、または、このようにそれを行います。

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になりますどんなものであれ - 配列。

関連する問題