返回列表 上一主題 發帖

[發問] 隔列複製資料至另一工作表,依對應欄位貼上

回復 1# viggostar
  1. Sub Ex()
  2. Dim Ar(), Ay(6), Rng As Range, CLM$, A As Range, i%, s&
  3. With Sheet1
  4. CLM = "CLKMPY"
  5. Set Rng = .Range(.[C3], .[C65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
  6. For Each A In Rng
  7. For i = 1 To 6
  8.   Ay(i - 1) = .Cells(A.Row, Mid(CLM, i, 1)).Value
  9. Next
  10.    ReDim Preserve Ar(s)
  11.    Ar(s) = Ay
  12.    s = s + 1
  13. Next
  14. End With
  15. Sheet2.[A65536].End(xlUp).Offset(1, 0).Resize(s, 6) = Application.Transpose(Application.Transpose(Ar))
  16. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 3# viggostar
  1. Sub Ex()
  2. Dim Ar(), Ay(4), Rng As Range, Ck(), Kr(), A As Range, i%, s&
  3. With Sheet1
  4. Ck = Array("V", "AD", "AO", "AA")
  5. Kr = Array("C", "E", "H", "K")
  6. Set Rng = .Range(.[C5], .[C65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
  7. For Each A In Rng
  8. For i = 0 To 3
  9.   Ay(i) = "'" & .Cells(A.Row, Ck(i))
  10. Next
  11.    ReDim Preserve Ar(s)
  12.    Ar(s) = Ay
  13.    s = s + 1
  14. Next
  15. End With
  16. For i = 0 To UBound(Ar)
  17. Set A = Sheet3.[C65536].End(xlUp).Offset(1, 0)
  18.    For j = 0 To 3
  19.    Sheet3.Cells(A.Row, Kr(j)) = Ar(i)(j)
  20.    Next
  21. Next
  22.    
  23. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 5# viggostar


    Preserve 選擇性引數。當改變原有陣列最後一維的大小時,仍然保有原來的資料的關鍵字。
也就是說陣列大小改變後,仍保留原有的元素
例如宣告一陣列Ar()
若用Redim Ar(5)
那不管之前給過Ar(0),Ar(1),...有甚麼值
經ReDim以後這些值就全部被清除了
                                                         
Dim Ar(4)
for i=0 to 3
   Ar(i)=i
next
上面敘述你已經將原陣列Ar(0)~Ar(3)給過值
現在要擴大成5個元素但要保留Ar(0)~Ar(3)的值
ReDim Preserve Ar(5)
Ar(4)=4
你再測試
for i= 0 to UBound(Ar)
    msgbox "Ar(" & i & ")=" & Ar(i)
next
學海無涯_不恥下問

TOP

回復 5# viggostar


    為什麼可以只有with sheet1來執行
不需要指定sheet的名字是 order 或 detail
Sheet1是用工作表的CodeName不會因工作表更名而改變
order 或 detail是工作表的Name會因工作表更名而改變
                                                                                             
變數的資料型態
在 Visual Basic 可用符號 (&) 的型態宣告字元來表示一個 Long
在 Visual Basic 可用百分比符號 (%) 的型態宣告字元來表示一個 Integer。
在 Visual Basic 可用 @ 宣告字元來表示 Currency
在 Visual Basic 中可用型態宣告字元 (!) 來表示一個 Single。
在 Visual Basic,符號 (#) 是表示 Double 的型態宣告字元
學海無涯_不恥下問

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題