當我正在將數組Dim A (1 To 3) As String
轉儲到單元格的垂直範圍A1:A3
時,陣列的第一個單元格將在所有範圍內重複。在excel中轉儲數組垂直方向VBA
例如,假設A(1) = "a" , A(2) = "b" , A(3) = "c"
所以結果是a
在所有的A1:A3
範圍內。
的代碼是Range("A1:A3").Value = A
我在做什麼錯?
謝謝!
當我正在將數組Dim A (1 To 3) As String
轉儲到單元格的垂直範圍A1:A3
時,陣列的第一個單元格將在所有範圍內重複。在excel中轉儲數組垂直方向VBA
例如,假設A(1) = "a" , A(2) = "b" , A(3) = "c"
所以結果是a
在所有的A1:A3
範圍內。
的代碼是Range("A1:A3").Value = A
我在做什麼錯?
謝謝!
Sub Tester()
Dim a(1 To 3)
a(1) = "a"
a(2) = "b"
a(3) = "c"
Range("A1:A3").Value = a 'all "a"
Range("A1:C1").Value = a 'works, because left-to-right is the default
Range("A1:A3").Value = Application.Transpose(a) 'works
End Sub
我的通常的做法是REDIM陣列相同的尺寸範圍內的對象
對於範圍 「A1:A3」 是一個3 * 1 2D陣列
Sub testing()
Dim a()
' a(1 to rowCount, 1 to columnCount)
ReDim a(1 To 3, 1 To 1)
a(1, 1) = "A"
a(2, 1) = "B"
a(3, 1) = "C"
Range("A1:A3").Value = a
End Sub
爲什麼'ReDim' - 這實際上是一個比你已經顯示的更長的過程,因爲一維數組已經存在 - 也就是說,你需要循環一維數組來創建一個新的二維數組。正如蒂姆建議 – brettdj
@brettdj正確,爲了這個目的,直接用'Transpose'轉儲1D數組... – Larry