- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
4#
發表於 2011-5-11 08:51
| 只看該作者
回復 3# melvinhsu1105
是這樣媽?- Option Explicit
- Sub Ex()
- Dim AR(), C%, i%, ii%
- ReDim AR(0) 'ReDim:重新配置動態陣列變數的儲存空間 ->0到0
- With ActiveSheet
- C = .[B1].End(xlToRight).Column '取的:B1往右連續資料表頭最後的欄位數
- AR(0) = .Range("B1", .Cells(1, C)).Value '指定:陣列的元素值
- For i = 2 To .Cells(2, "A").End(xlDown).Row '迴圈:從A2開始往下直到沒資料的列位
- For ii = 1 To .Cells(i, "A").Value '迴圈:從1開始到.Cells(i, "A").Value =複製的筆數
- ReDim Preserve AR(UBound(AR) + 1) 'ReDim:重新配置動態陣列變數的儲存空間->原有維數+1
- 'Preserve:當改變原有陣列最後一維的大小時,仍然保有原來的資料的關鍵字。
- 'UBound:表示指定陣列某維最大可使用的陣列索引
- AR(UBound(AR)) = .Range(.Cells(i, "B"), .Cells(i, C)).Value '指定:陣列最大的元素值
- Next
- Next
- End With
- With Workbooks.Add.Sheets(1).Range("A1") 'With: 在一個單一物件或一個使用者自訂型態上執行一系列的陳述式。
- For i = 0 To UBound(AR) '迴圈:從AR的第1個元素(0)到AR的最大元素UBound(AR)
- .Offset(i).Resize(, C - 1) = AR(i) '.Offset(i):在此i表往下的列數
- '.Resize(, C - 1): 擴充的範圍為(1列,C - 1欄)=陣列元素的值
- Next
- End With
- End Sub
複製代碼 |
|