2017-02-16 6 views
0

Ich habe diesen Code, um die Werte des ausgewählten Bereichs in einem Array zu speichern.Typ Mismatch in Array

dim lRow, i as Integer 
dim rngValues() as Variant 

rngValues = thisworkbook.Sheets(2).Range("C2:C" & lRow) 


For i = LBound(rngValues) To UBound(rngValues) 
    Debug.Print rngValues(i) ' this lines returns Type Mismatch error. 
Next i 

Nach einige Änderungen mit der Säule zu tun, muss ich es zurück an den column.Can fügen Sie bitte helfen Sie mir dies herauszufinden?

+1

'rngValues' ist ein 2-D-Array, also' Debug.Print rngValues ​​(i, 1) ' –

+0

Versuchen Sie, die Range-Werte oder nur den Range selbst zu speichern? Wenn Sie Werte im Arbeitsspeicher speichern/laden ('Dim rngValues ​​As Variant: rngValues ​​= Dieses Arbeitsbuch.Sheets (2) .Range (" C2: C "& lRow) .Value), ist es zweidimensional - 1. Dimension:' LBound (rngValues , 1) ', 2. Dimension:' LBound (rngValues, 2) '. Zeilen ist 1. Dimension, Cols ist 2.. – PatricK

+0

@PatricK Ich speichere Bereichswerte :) – ramedju

Antwort

3

Edited Datumswerte in bestimmten Format

zurückzukehren Als Tim Williams schon gesagt, Ihr rngValues ​​Array ein 2D ein

zu haben, ist es als ein 1D-Array können Sie Code wie folgt:

dim lRow A Long, i as Long '<--| expliciltly declare each variable and use Long for row index ones since they can exceed Integer capacity 
dim rngValues as Variant '<--| declare rngValues as a Variant instead as an array of Variant 

rngValues = Application.Transpose(ThisWorkbook.Sheets(2).Range("C2:C" & lRow).Value) '<--| transpose the "columned" values to "rowed" ones suitable for a 1D array 

For i = LBound(rngValues) To UBound(rngValues) 
    Debug.Print Format(rngValues(i),"yyyy/mm/dd") 
Next 
+0

Danke dafür. Aber kennst du eine Workaround für meinen obigen letzten Kommentar? – ramedju

+0

Siehe bearbeitete Antwort. Mit Format() -Funktion erhalten Sie s Zeichenfolge mit einem Datum formatiert, wie Sie brauchen – user3598756

+0

Ich habe diesen Code eingefügt Einfügen der Werte in die Spalte Thisworkbook.Sheets (2) .Range ("C2: C" & lRow) = Format (Application.Transpose (rngValues), "yyyy/mm/dd") 'aber es gibt Type Mismatch Error zurück. – ramedju