[英]Excel VBA looping through multiple worksheets
VBA初學者在這里,我對我正在研究的程序有一點問題。
我需要從第一個工作表中復制B列中最后一個單元格的數據,然后將其粘貼到另一個工作表xws中的A列中,並對包含數據的其他五個工作表重復此操作。
這是代碼,它不會按照它應該的方式工作:
Sub exercise()
Dim ws As Worksheet
Dim rng As Range
'Finding last row in column B
Set rng = Range("B" & Rows.Count).End(xlUp)
For Each ws In ActiveWorkbook.Worksheets
'Don't copy data from xws worksheet
If ws.Name <> "xws" Then
'Storing first copied data in A1
If IsEmpty(Sheets("xws").[A1]) Then
rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp)
'Storing next copied data below previously filled cell
Else
rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End If
End If
Next ws
End Sub
ws存在問題。 引用,但每當我把它放在if語句之前或范圍之前(設置rng = ...)時,我就會出錯。
提前感謝任何指針。
你應該為循環中的每個ws
聲明rng
,例如:
Sub exercise()
Dim ws As Worksheet
Dim rng As Range
For Each ws In ActiveWorkbook.Worksheets
'Finding last row in column B
Set rng = ws.Range("B" & ws.Rows.Count).End(xlUp) '<~~ Moved inside the loop
'Don't copy data from xws worksheet
If ws.Name <> "xws" Then
'Storing first copied data in A1
If IsEmpty(Sheets("xws").[A1]) Then
rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp)
'Storing next copied data below previously filled cell
Else
rng.Copy Sheets("xws").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End If
End If
Next ws
End Sub
正如您的代碼現在, rng
將在您運行宏時指向ActiveSheet
,然后您的代碼將在代碼的每次迭代中復制相同的單元格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.