簡體   English   中英

Excel VBA:如果特定工作表上的特定列為空白,則刪除空白列和整個行

[英]Excel VBA: Delete blank columns & entire rows if specific columns are blank on specific worksheet not working

我的問題是,宏將無法在指定的工作表上運行,只能在活動的工作表上運行。 我有兩個子例程,用於刪除整個列,然后在特定列為空的情況下刪除整個行。 我想使其適用於特定的工作表,據我With Worksheets("OutPut")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它們的按鈕,如果要轉換的工作表處於活動狀態,它將再次起作用。 作為參考,它打算附加在現有的公司宏上,因此僅在工作表處於活動狀態時在工作表上運行它是行不通的。

謝謝!

對於第一個代碼示例,

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

應該

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

(在列之前的“。”,用於指定工作表)

第二個代碼示例也是如此

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM