Excel VBA:删除空白列和&如果特定工作表上的特定列为空,则整行不起作用

时间:2016-09-09 19:51:50

标签: excel vba excel-vba macros

我的问题是宏不能在指定的工作表上工作,只能在活动工作表上工作。我有两个子程序用于删除整列,如果特定列为空,则删除整行。我想让它适用于特定的工作表,我理解为With Worksheets("OutPut")但它仍然会剔除活动工作表。

只要选择了活动工作表,它就可以正常工作。

Sub DeleteBlankColumns()
    With Worksheets("OutPut")
        Set MyRange = Worksheets("OutPut").UsedRange
        For iCounter = MyRange.Columns.Count To 1 Step -1
            If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
            Columns(iCounter).Delete
            End If
        Next iCounter
        End With
End Sub

Sub QuickCull()
    With Worksheets("OutPut")
        On Error Resume Next
        Columns("B").SpecialCells(xlBlanks).EntireRow.Delete
        On Error Resume Next
        Columns("C").SpecialCells(xlBlanks).EntireRow.Delete
        On Error Resume Next
        Columns("D").SpecialCells(xlBlanks).EntireRow.Delete
        On Error Resume Next
        Columns("E").SpecialCells(xlBlanks).EntireRow.Delete
        End With
End Sub

对于Call这两个按钮都有一个按钮,如果我要转换的工作表处于活动状态,它将再次起作用。作为参考,这是为了附加在现有的公司宏上,因此只需在工作表上激活它就不起作用。

谢谢!

1 个答案:

答案 0 :(得分:1)

对于第一个代码示例,

If Application.CountA(Columns(iCounter).EntireColumn) = 0 Then
     Columns(iCounter).Delete

应该是

If Application.CountA(.Columns(iCounter).EntireColumn) = 0 Then
     .Columns(iCounter).Delete

(a"。"在列之前,指定工作表)

第二个代码示例

也是如此