如何在工作表中循环复制/粘贴?

时间:2017-11-16 21:50:46

标签: excel-vba vba excel

我正在尝试编写一个循环,它将通过工作簿并执行以下操作: 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

我的问题是如何更改上面的代码来执行我最初指定的操作?上面的代码只是复制和粘贴我需要的部分(意思是它不完整)。任何帮助都会非常感激,我花了很多时间来摸索这个到目前为止。谢谢,

1 个答案:

答案 0 :(得分:1)

看起来你有基础知识。我有几点建议:

  1. 使用with块时,通过with启动.对象的访问属性。我已将以下Range次来电更新为.Range以进行演示。因为你的with块中Range的前三个用法是访问所选的任何工作表,因为你也从不选择循环中的每个wrksht
  2. 无需使用.select来占据您的位置。您可以直接引用Range(ref),也可以将.end链接在一起。这使得执行速度更快,并且还可以防止需要切换到从中获取数据的工作表。看看我是如何用一个命令复制范围而没有选择的。
  3. 您可以参考表格标签,例如Sheets("Master")。我发现这比他们的数字更容易。
  4. 我已将此合并到以下代码中。它实际上没有经过测试,因为我不知道你的布局,但我希望它有所帮助。

    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