Excel VBA – 循环活动表不起作用

嗨,这个网站多年来,通常帮助我所有的问题。 我已经看了大量的post,这些post似乎都是相关的,但是我仍然无法获得这个代码的工作,我已经使用了许多排列,但它仍然是行不通的。 我试图循环表单,并删除不等于表名称的行条目; 我也去if语句忽略特定工作表。 我的问题是它只会在一张纸上工作,不会遍历所有。 有什么想法吗:

Sub CleanRegionalSheets() Application.ScreenUpdating = False Dim ws As Worksheet Dim lngx As Long With ws For Each ws In ActiveWorkbook.Worksheets If ActiveSheet.Name = "Raw Data" Then ElseIf ActiveSheet.Name = "Building Status" Then ElseIf ActiveSheet.Name = "Clean Data" Then Else For lngx = Cells(Rows.Count, "A").End(xlUp).Row To 3 Step -1 If Cells(lngx, "A").Value <> ActiveSheet.Name Then Cells(lngx, "A").EntireRow.Delete Shift:=xlUp End If Next End If Next End With End Sub 

更新后的代码仍然不能正常工作

 Sub CleanRegionalSheets() Application.ScreenUpdating = False Dim ws As Worksheet Dim lngx As Long For Each ws In ActiveWorkbook.Worksheets If ws.Name = "Raw Data" Then ElseIf ws.Name = "Building Status" Then ElseIf ws.Name = "Clean Data" Then Else For lngx = Cells(Rows.Count, "A").End(xlUp).Row To 3 Step -1 If Cells(lngx, "A").Value <> ws.Name Then Cells(lngx, "A").EntireRow.Delete Shift:=xlUp End If Next End If Next End Sub 

我错过了那里的东西吗?

你错过了ws对象。 试试这个(你也忘了在最后启用ScreenUpdate):

 Sub CleanRegionalSheets() Application.ScreenUpdating = False Dim ws As Worksheet Dim lngx As Long For Each ws In ActiveWorkbook.Worksheets Select Case ws.Name Case "Raw Data", "Building Status", "Clean Data" Case Else With ws For lngx = .Cells(.Rows.Count, "A").End(xlUp).Row To 3 Step -1 If .Cells(lngx, "A").Value <> .Name Then .Rows(lngx).Delete Shift:=xlUp End If Next End With End Select Next Application.ScreenUpdating = True End Sub