Vba 循环浏览Excel表格
我有下面的代码,我希望它在工作簿的其他25个工作表中运行,而不是重复代码25次,对于每个工作表,是否有方法使其循环 有人能帮忙吗Vba 循环浏览Excel表格,vba,excel,Vba,Excel,我有下面的代码,我希望它在工作簿的其他25个工作表中运行,而不是重复代码25次,对于每个工作表,是否有方法使其循环 有人能帮忙吗 Sub DeleteEmptyRows() Dim ws As Worksheet Dim strSearch As String Dim lRow As Long strSearch = "ressort" Set ws = Sheets("01,02,03") With ws lRow = .Range("A" & .Rows.Count).
Sub DeleteEmptyRows()
Dim ws As Worksheet
Dim strSearch As String
Dim lRow As Long
strSearch = "ressort"
Set ws = Sheets("01,02,03")
With ws
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("A1:A" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ActiveSheet.Range("$A$1:$P$65536").AutoFilter Field:=1
End With
End Sub
将处理代码包装在循环中
for each ws in thisworkbook.sheets
' do something on each worksheet
next
范例
Sub DeleteEmptyRows()
Dim ws As Worksheet
Dim strSearch As String
Dim lRow As Long
strSearch = "ressort"
For Each ws In ThisWorkbook.Sheets
If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet3") Then
With ws
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("A1:A" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
ws.Range("$A$1:$P$65536").AutoFilter Field:=1
End With
End If
Next
End Sub
Sub-DeleteEmptyRows()
将ws设置为工作表
作为字符串的Dim stresearch
暗淡的光线和长的一样
strSearch=“ressort”
对于此工作簿中的每个ws.Sheets
如果(ws.Name“Sheet1”)和(ws.Name“Sheet2”)以及(ws.Name“Sheet3”),则
与ws
lRow=.Range(“A”&.Rows.Count).End(xlUp).Row
带.Range(“A1:A”和lRow)
.AutoFilter字段:=1,标准1:=“=*”&strSearch&“*”
.Offset(1,0).特殊单元格(xlCellTypeVisible).EntireRow.Delete
以
ws.Range(“$A$1:$P$65536”)。自动筛选字段:=1
以
如果结束
下一个
端接头
因此,如果工作表名称是Sheet1、Sheet2或Sheet3,则将跳过它们。您的代码需要存储在模块中,而不是包含在工作表中。以下插图说明了循环的工作原理:
Sub test()
Dim thisSheet As Worksheet
For Each sheet In Sheets
thisSheet.Cells(1, 1) = 1
Next
End Sub
我可以添加一个例外吗?我有3张工作表,我不想在上面运行宏。@adp确定让我快速调整答案嘿,我能让它忽略其他工作表吗?我有3张我不想在上面运行的工作表。是的-您可以使用thisSheet.CodeName或thisSheet.Name来获取工作表的名称(小心,这两个名称可能不同)。一旦获得了工作表的名称,就可以使用if语句过滤掉不希望在其上运行的三个工作表。