如何在不重复代码的情况下删除多个工作表中的同一行?

时间:2016-05-24 19:20:43

标签: excel vba excel-vba

Sheets("CDGL Data").Select
Rows([1]).EntireRow.Delete

Sheets("CDGL Data (2)").Select
Rows([1]).EntireRow.Delete

Sheets("CDGL Data (3)").Select
Rows([1]).EntireRow.Delete

Sheets("CDGL Data (4)").Select
Rows([1]).EntireRow.Delete

2 个答案:

答案 0 :(得分:2)

将它们重组为Array

Sheets(Array("CDGL Data", "CDGL Data (2)", "CDGL Data (3)", "CDGL Data (4)")).Select
Rows("1:1").Delete Shift:=xlUp

(基于宏录制器代码,非常适合发现Excel对象模型和API)

答案 1 :(得分:1)

您需要遍历工作表并删除行:

Sub delrow()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    If Left(ws.Name, 9) = "CDGL Data" Then
        Rows(1).Delete
    End If
Next ws
End Sub

这将删除每个以CDGL Data作为前9个字符的工作表中的行。

如果您想要更具体,那么我们可以创建一个字符串,其中包含连接的所有工作表的名称。然后查看工作表名称是否在字符串中:

Sub delrow()
Dim ws As Worksheet
Dim wsname As String
wsname = "CDGL Data,CDGL Data (2),CDGL Data (3),CDGL Data (4)"
For Each ws In ThisWorkbook.Worksheets
    If InStr(wsname, ws.Name) Then
        Rows(1).Delete
    End If
Next ws
End Sub