2016-04-26 7 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 

obigen Code funktioniert gut perfekt, wenn es mehr als 1 Wert in Arbeitsblatt ‚Temp‘ aber wenn es nur ein Wert z.B.Shop Einzelwert in dynamische Array: Typenkonflikt

Ref. No. 
2.1.a 

kann nicht in ein Array kopieren Sie gibt einen Fehler

'Typenkonflikt'

+0

Ein Bereich ist ein 2D-Array wie folgt: 'ReDim vArray (1, lRow - 1)', und 'lrow-1' darf niemals 0 oder niedriger sein. –

Antwort

1

Wo die Notwendigkeit ReDim vArray(lRow - 1) ist? Unter vArray = Sh_Te... werden die Grenzen automatisch gesetzt. Wenn nur ein Wert vorhanden ist, wird nur ein Wert und kein Array zurückgegeben. Aber mit Ihrem ReDim vArray(lRow - 1) versuchen Sie, einen Wert in ein Array ohne eine Position einzufügen.
Sie können wählen, es wie folgt verwenden:

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 

Dann vArray kein Array sein wird, wenn nur ein Wert zurückgegeben wird, oder es wie folgt tun:

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 

dann vArray ein 2D sein -array egal was.