2012-12-21 54 views
0

當我正在將數組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

我在做什麼錯?

謝謝!

回答

7
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 
1

我的通常的做法是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 
+0

爲什麼'ReDim' - 這實際上是一個比你已經顯示的更長的過程,因爲一維數組已經存在 - 也就是說,你需要循環一維數組來創建一個新的二維數組。正如蒂姆建議 – brettdj

+0

@brettdj正確,爲了這個目的,直接用'Transpose'轉儲1D數組... – Larry