如何在每个工作表中查找范围并将每个范围粘贴到一个工作表中

时间:2015-10-11 21:37:45

标签: excel vba excel-vba

我试图在这里做三件事。三分之二似乎在起作用:

  1. 我试图遍历每个工作表(从标题为" Cover Sheet"的工作表开始)。这似乎有效。

  2. 在每个工作表中,我在D列中搜索包含" Assigned On"的单元格。这也似乎有效。

  3. 在每个工作表的单元格下面,应该是一行或多行数据(包含在D到J列中)。我想将每个工作表中的数据复制到一个名为" Due Outs"的工作表中。我无法完成这一步。

  4. 我的代码如下。我一直在match.CurrentRegion.Select收到运行时1004错误,因为Range类的 select方法失败。我尝试了几种变体,包括Resize和Offset,并保持得到同样的错误。

    Sub macroGetDue()
    Dim ws As Worksheet
    Dim match As Range
    Dim findMe As String
    Dim StartIndex As Integer
    
    StartIndex = Sheets("Cover Sheet").Index + 1
    findMe = "Assigned on"
    
    For Each ws In Worksheets
    If ws.Index > StartIndex Then
        Set match = ws.Range("D:D").Find(findMe).Offset(1)
        match.CurrentRegion.Select
        Selection.Copy
        Sheets("Due Outs").Range("D" & Rows.Count).End(xlUp).Offset(1).Select
        Selection.Paste
    End If
    Next ws
    End Sub
    

1 个答案:

答案 0 :(得分:2)

始终建议避免使用“选择”,您可以将范围复制到另一个范围而不使用它。大多数情况下它失败了,因为WS没有激活。

最好像这样直接复制:

match.CurrentRegion.Copy Sheets("Due Outs").Range("D" & Rows.Count).End(xlUp).Offset(1)