宏以一个例外运行所有工作表

时间:2015-01-28 14:04:34

标签: excel vba excel-vba

我正在尝试编写一个宏来选择在特定列中包含文本的任何行(与哪个文本无关)然后将其粘贴到摘要表中,这需要遍历工作簿栏中的所有工作表摘要表。但是我遇到问题让它工作,我一直得到'编译错误:方法或数据成员未找到',我需要宏来运行所有工作表而不管名称,因为工作表最终存档并添加新的工作表。

我现在已经改变了宏找到带有文本的单元格的方式,我不知道这是否会改变:

Sub SmartCopy()

Dim s1 As Worksheet, s2 As Worksheet
Dim N As Long, i As Long, j As Long
Set s1 = Sheets("Customer 1")
Set s2 = Sheets("Action Summary")
N = s1.Cells(Rows.Count, "C").End(xlUp).Row
j = 2
For i = 6 To N
    If s1.Cells(i, "C").Value = "" Then
    Else
        s1.Cells(i, "C").EntireRow.Copy s2.Cells(j, 1)
        j = j + 1
    End If
Next i

End Sub

我是新手,可能完全错了,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

首先STOP using .Select

其次,这应该基于您过滤和复制特定行的标准。您可能需要调整过滤器或复制的行,但此循环将起作用。

Sub TestIt()

Dim wsheet As Worksheet

For i = 1 To ThisWorkbook.Worksheets.Count
    If ThisWorkbook.Worksheets(i).Name <> "Action Summary" Then 'And ThisWorkbook.Worksheets(i).Name <> "Another Exception" And ...
        Set wsheet = ThisWorkbook.Worksheets(i)
        For j = 6 to wsheet.Range("A" & Rows.Count).End(xlUp).Row
            If Not wsheet.Range("C" & j).Value = "" Then
                wsheet.Range("C" & j).EntireRow.Copy
                Sheets("Action Summary").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
            End If
        Next j
    End If
Next i

End Sub