我正在尝试编写一个循环,它将通过工作簿并执行以下操作: 1.选择工作表 2.在所选工作表上复制选定的单元格 3.回到主人或家里"片 4.将复制的值粘贴到此主表的下一个空行中 5.转到下一个工作表并重新开始该过程。
我已尝试使用以下代码进行此操作,但我担心我还不熟悉VBA,循环和动态范围选择。
Sub Create_One_Table()
Dim wrksht As Worksheet
Dim c As Range, rng
For Each wrksht In ThisWorkbook.Worksheets
With wrksht
Range("BB2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("05").Select
Range("BB17").Select
Range("B" & Rows.Count).End(xlUp).Offset(1).Select
Sheets("05").Paste
End With
Next wrksht
End Sub
我的问题是如何更改上面的代码来执行我最初指定的操作?上面的代码只是复制和粘贴我需要的部分(意思是它不完整)。任何帮助都会非常感激,我花了很多时间来摸索这个到目前为止。谢谢,
答案 0 :(得分:1)
看起来你有基础知识。我有几点建议:
with
块时,通过with
启动.
对象的访问属性。我已将以下Range
次来电更新为.Range
以进行演示。因为你的with块中Range
的前三个用法是访问所选的任何工作表,因为你也从不选择循环中的每个wrksht
。.select
来占据您的位置。您可以直接引用Range(ref)
,也可以将.end
链接在一起。这使得执行速度更快,并且还可以防止需要切换到从中获取数据的工作表。看看我是如何用一个命令复制范围而没有选择的。Sheets("Master")
。我发现这比他们的数字更容易。我已将此合并到以下代码中。它实际上没有经过测试,因为我不知道你的布局,但我希望它有所帮助。
Sub Create_One_Table()
Dim wrksht As Worksheet
Dim c As Range, rng
'Make sure "Master" is selected because this is the only one you need to select cells on (to paste)
Sheets("Master").Select
For Each wrksht In ThisWorkbook.Worksheets
With wrksht
.Range(.Range("BB2"), .Range("BB2").End(xlToRight).End(xlDown)).Copy
End With
Range("B" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
Next wrksht
End Sub