【发布时间】:2021-05-12 08:49:33
【问题描述】:
所有,我有一些 VBA 可以删除 C 列为空白的任何行。它还会删除 A 列以“名称”或“条形名称”开头的行。问题是当我一起运行这些时,它只运行前两个步骤。此外,它实际上并没有关闭它正在使用的过滤,而是在删除数据后过滤工作表。
知道如何让它作为一个步骤运行,这似乎只能识别第一张工作表的 VBA?
Sub WB()
With ThisWorkbook.Worksheets("Geez")
Application.ScreenUpdating = False
Columns("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
End With
End Sub
Sub WC()
With ThisWorkbook.Worksheets("Geez")
.AutoFilterMode = False
With Range("a1", Range("a" & Rows.Count).End(xlUp))
.AutoFilter 1, "*Bar Name*"
On Error Resume Next
.Offset(1).SpecialCells(12).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub
Sub WE()
With ThisWorkbook.Worksheets("Class")
Application.ScreenUpdating = False
Columns("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
End With
End Sub
Sub WF()
With ThisWorkbook.Worksheets("Class")
.AutoFilterMode = False
With Range("a1", Range("a" & Rows.Count).End(xlUp))
.AutoFilter 1, "*Name*"
On Error Resume Next
.Offset(1).SpecialCells(12).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub
我尝试使用以下命令全部运行并分配给一个按钮,但它仅在前两个步骤中运行。它还会过滤第一张纸,但实际上并没有删除过滤器。
Sub Run1()
Call WB
Call WC
Call WE
Call WF
End Sub
【问题讨论】:
-
一方面,您在范围(With)前面省略了很多点。
标签: excel vba error-handling