Ho questo codice che popolerà una matriceIncolla VBA serie
Sub rangearray()
Dim arr() As Variant
Dim Rng As Range
Dim myCell As Range
Dim i As Integer
Set Rng = ActiveSheet.Range("G10:G14")
For Each myCell In Rng
ReDim Preserve arr(i)
arr(i) = myCell
i = i + 1
Next myCell
ActiveSheet.Range("H10:H14") = arr()
End Sub
Qui potete vedere che i valori nella finestra di controllo sono ciò che è stata eseguita in
Tranne, quando aggiungo l'array alla cartella di lavoro, viene incollato solo il primo elemento dell'array.
E 'possibile incollare l'intera matrice al foglio di lavoro, senza dover scorrere l'array?
UPDATE Dopo aver dato un'occhiata al link da Sorceri ho modificato per codice per utilizzare la funzione .Transpose, quindi il mio codice modificato apparire così:
Sub rangearray()
Dim arr() As Variant
Dim Rng As Range
Dim myCell As Range
Dim i As Integer
Set Rng = ActiveSheet.Range("A1:A5")
For Each myCell In Rng
ReDim Preserve arr(i)
arr(i) = myCell
i = i + 1
Next myCell
ActiveSheet.Range("B1:B5") = WorksheetFunction.Transpose(arr)
End Sub
Perché è necessario un array per questo? Vedi [QUESTO] (http://stackoverflow.com/questions/19277994/error-13-when-pasting-from-another-workbook/19280614#19280614) –
Perché voglio incollare da un array, non da un altro intervallo – spences10
Ma non è quello che stai facendo? 'Range (" G10: G14 ") -> Range (" H10: H14 ")' –