補充:目前只知道可以這麼寫
Sub 複製貼上()
Worksheets("1").Range("F30:N30").Copy _
Worksheets("sheet1").Range("B3")
Worksheets("1").Range("F31:N31").Copy _
Worksheets("sheet1").Range("K3")
Worksheets("1").Range("F32:N32").Copy _
Worksheets("sheet1").Range("T3")
Worksheets("1").Range("F33:N33").Copy _
Worksheets("sheet1").Range("AC3")
.
.
.
End Sub
以此類推,但因為工作表過多,不太可能把每個"1"改成"2"或"3"....
請教該用什麼迴圈來簡化重複的動作....感謝作者: 准提部林 時間: 2019-8-24 10:00
各個分表都是固定格式,
Sub 載入()
Dim Arr, A, Sc%, N%, i&, j&
ActiveSheet.UsedRange.Offset(3, 0).EntireRow.Delete
Sc = Sheets.Count - 1
ReDim Arr(1 To Sc, 1 To 181)
For i = 2 To Sheets.Count
Arr(i - 1, 1) = Sheets(i).Name
For j = 1 To 180
Arr(i - 1, j + 1) = Sheets(i).[D4:L23].Item(j)
Next j
Next
[C4].Resize(Sc, 181) = Arr
End Sub
用儲存格對照法吧! 速度較慢:
Sub 載入()
Dim xA As Range, xArea As Range, i, j&
Sheets("主表").UsedRange.Offset(3, 0).EntireRow.Delete
Set xA = [主表!C3] '初始寫入定位格
Application.ScreenUpdating = False
For i = 2 To Sheets.Count
Set xA = xA(2, 1) '寫入定位格向下移一格
xA = "工作表--" & Sheets(i).Name '寫入工作表名稱
Set xArea = Sheets(i).[D4:L23] '定位各分表資料區域
For j = 1 To 20 '由上往下抓[D4:L23]整列, 再由左往右寫入主表
xA(1, (j - 1) * 9 + 2).Resize(1, 9) = xArea.Rows(j).Value
Next j
Next
Range([主表!C4], xA(1, 181)).Borders.LineStyle = 1 '加入框線
End Sub