Board logo

標題: 教我怎樣用陣列寫程式碼~~~ [打印本頁]

作者: oak0723-1    時間: 2010-9-5 16:19     標題: 教我怎樣用陣列寫程式碼~~~

本帖最後由 oak0723-1 於 2010-9-5 20:57 編輯

小弟對這個程式碼有疑問
Dim a, r%, i%, arr()
    a = Sheets("1").[c10].CurrentRegion
    r = 1
    For i = 1 To UBound(a)
        ReDim Preserve arr(1 To 3, 1 To r)
        arr(1, r) = a(i, 1): arr(2, r) = a(i, 2): arr(3, r) = a(i, 3)
        r = r + 6
    Next
    Sheets("2").[c4].Resize(r - 6, 2) = Application.Transpose(arr)
    Sheets("2").[k4].Resize(r - 6, 1) = Application.Transpose(Application.Index(arr, 3))
問題1>arr(1, r) = a(i, 1): arr(2, r) = a(i, 2): arr(3, r) = a(i, 3)
為何不能寫成arr(1, r) = a(1, i): arr(2, r) = a(2, i): arr(3, r) = a(3, i)
問題2>為何要Transpose轉置??不轉置不行嗎?
以上雖然小弟有給他改寫並試驗(如附件控制鈕"test3"."test4")
執行後確實是不行
我應該是看不懂這個程式碼陣列意思
可否幫幫小弟忙解釋一下
讓小弟學習
作者: oobird    時間: 2010-9-5 19:34

我們一開始無法知道這個陣列有多大,所以用動態陣列,而動態陣列有個規則,就是只能改變第二維的大小,所以程式中 arr(1, r) = a(i, 1): arr(2, r) = a(i, 2): arr(3, r) = a(i, 3)是把原來a直向的排列變成橫向的排列載入arr
中,以適應改變大小的規則,最後再轉置寫入工作表上。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)