我有这段代码将填充一个数组
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
在这里,您可以看到监视窗口中的值是已加载的值
例外,当我将数组添加回工作簿时,它只会粘贴回数组的第一个元素。
是否可以将整个数组粘贴到工作表中而不必遍历整个数组?
看完Sorceri的链接后,我已修改为使用.Transpose函数的代码,因此现在修改后的代码如下所示:
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
最佳答案
您将要使用转置工作表功能http://msdn.microsoft.com/en-us/library/office/ff196261.aspx
见下文。您必须将其分配给范围的值
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").Value = WorksheetFunction.Transpose(arr)
End Sub
关于arrays - 如何粘贴整个数组而不在VBA中遍历整个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300555/