返回列表 上一主題 發帖

如何設定複製迴圈sheet1複製儲存格至sheet2固定位置????

程式構想:
1.〔標籤清單〕工作表前3列,事先設定好表格樣式(只有標題文字,未填內容),
  一排要幾欄(視列印大小),可由此決定,貼入資料時,即以此為樣本往右往下轉貼。
2.貼入資料時,從第4列開始,樣式就用前3列為來源,再逐一填入資料,
  處理完成後,再刪去前3列。
3.執行〔清除〕,即可恢復原狀(爾後仍可重新更改樣式,程式只依樣複製)
  1. Sub 轉出()
  2. Dim R&, xR As Range, xH As Range, xE As Range
  3. Call 清除
  4. R = [標籤清單!A65536].End(xlUp).Row
  5. If R < 2 Then Exit Sub
  6. Set xH = [標籤樣式!A4]: Set xE = xH

  7. For Each xR In [標籤清單!A2].Resize(R - 1)
  8.     If xH = "" Then [標籤樣式!1:3].Copy xE
  9.     xE(2, 2) = xR
  10.     xE(3, 2) = xR(1, 2)
  11.     Set xE = xE(1, 3)
  12.     If xE = "" Then Set xH = xH(4): Set xE = xH
  13. Next
  14. [標籤樣式!1:3].EntireRow.Delete
  15. Application.Goto [標籤樣式!A1]
  16. End Sub
複製代碼
 
附件下載:
財產標籤製作v01.rar (16.22 KB)  
 

TOP

回復 5# poke0817


不可使用是因為您〔沒有下載〕附檔,詳細看裡面還有一個 sub 清除() 程式,
〔清除〕程式我一般會另外寫!

表格〔第一排〕請依您的所需先右貼,要貼幾個模板依〔列印寬度〕而定,而不是只有A1:B3一組,
這個做法可減少很多程式碼,反正第一排怎設定,程式依樣畫葫蘆,
若有更改也不須去更動大部份的程式,只要直接對表格修改即可!

xR(1) → xR.cells(1,1)
xR(2) → xR.cells(2,1) 是它的〔下一格〕,若要指定其〔右一格〕,則為 xR(1,2) → 等同于 xR.cells(1,2)

TOP

回復 9# poke0817

1.每次遇到問題內容演變到最後上傳的附件都不一樣,修修改改,很頭痛!
  只能做到這個附檔為止,若有差異請自行修改!
2.請務必下載範例檔詳細看(已設定標籤的列印樣式,幾乎是客製化了∼∼),
  以新入會員無法下載附檔,再破例多提供另一下載址,請儘量參與論壇交流,以提升下載權限!
3.標籤樣式有兩種,所以程式碼分別設置,比對兩種應可更了解程式的意思!
  1. Sub 轉入1()
  2. Dim xA As Range, xB As Range, xR As Range, xH As Range, xE As Range
  3. Call 清除1
  4. Set xA = [清單!C2]: Set xB = [清單!B7]
  5. If xB = "" Then Exit Sub
  6.  
  7. Set xH = [A10]: Set xE = xH '定位資料輸出儲存格位置
  8. Application.ScreenUpdating = False
  9.  
  10. Do: If xH = "" Then Rows("1:8").Copy xH(0, 1) '複製空白樣式
  11.   xE(2, 1) = xA(1, 1) '填入〔料號〕
  12.   xE(3, 2) = xA(1, 1) '填入〔料號〕
  13.   xE(4, 2) = xA(2, 1) '填入〔品名〕
  14.   xE(4, 4) = xA(4, 1) '填入〔批號〕
  15.   xE(5, 2) = xB(1, 2) '填入〔高度1〕
  16.   xE(6, 2) = xB(2, 2) '填入〔高度2〕
  17.   xE(5, 4) = xB(3, 2) '填入〔高度3〕
  18.   xE(6, 4) = xB(4, 2) '填入〔高度4〕
  19.   xE(7, 2) = xB(1, 1) '填入〔盒數〕
  20.   xE(7, 4) = xB(1, 3) '填入〔備註〕
  21.   Set xE = xE(1, 6) '定位下一筆填入位置
  22.   If xE = "" Then Set xH = xH(9): Set xE = xH  '若右方已無可填入表格,向下定位
  23.   Set xB = xB(5, 1) '下一筆資料來源位置
  24. Loop Until xB = ""
  25.  
  26. Rows("1:8").Delete
  27. End Sub
  28.  
  29. '===================================
  30. Sub 清除1()
  31. With ActiveSheet
  32.   .UsedRange.Offset(8, 0).EntireRow.Delete  '清除第8列以下資料
  33.   .[A3,B4,B5:B8,D5:D8] = ""
  34.   .[A2:E8].Copy [F2:o8]
  35. End With
  36. End Sub
複製代碼
 
附件下載:
標籤製作v01.rar (32.79 KB)
或
http://www.funp.net/783355

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題