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

我的问题是macros不能在指定的工作表,只有活动的工作表。 我有两个子例程删除整个列,然后删除整行,如果特定的列是空白的。 我想让它适用于一个特定的工作表,我的理解是With Worksheets("OutPut")但它仍然拣选活动工作表。

只要select活动工作表,它就可以按预期工作。

 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 

有一个button可以Call它们,如果我想要转换的工作表是活动的,那么这个button也可以工作。 作为参考,这是打算附加在现有的公司macros,所以只是简单地在工作表上运行时,它是活跃的将无法正常工作。

谢谢!

对于第一个代码示例,

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

应该

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

(列之前的“。”,指定表单)

第二个代码示例是一样的