如果范围为空,则删除工作表

时间:2016-12-27 16:09:34

标签: excel vba excel-vba

如果范围" D14:K70" 在整个工作簿中为空但我不知道如何忽略"我创建了一个删除工作表的代码--------"工作表范围 72x ,空格 368x 。此外,我在表格(i)。删除

时遇到问题
Sub DeletingEmptyPages()

Dim i As Long

For i = Sheets.count To 1 Step -1
    If WorksheetFunction.CountIf(Sheets(i).Range("D14:K70"), "") >= 368 Then
        If Sheets.count > 1 Then
            Application.DisplayAlerts = False
            Sheets(i).Delete
            Application.DisplayAlerts = True
        Else
            MsgBox "Only 1 sheet left"
            Exit Sub
        End If
    End If
Next i
End Sub

2 个答案:

答案 0 :(得分:0)

处理同一问题的方式略有不同。你可以添加一个完整的循环来停止,如果它找到了一些东西,因为它会稍微加快这个过程但是范围太小我不认为这将是一个问题。

Sub DeletingEmptyPages()

Dim i As Long
Dim strTestRange As String
Dim bDeleteSheet As Boolean

strTestRange = "D14:K70"

For Each ws In ThisWorkbook.Worksheets
    bDeleteSheet = True
    For Each c In ws.Range(strTestRange)
        If Not (c.Value = "" Or c.Value = "-") Then bDeleteSheet = False
    Next c

    If bDeleteSheet Then
        If Sheets.Count > 1 Then
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        Else
            MsgBox "Only 1 sheet left"
            Exit Sub
        End If
    End If

Next ws

End Sub

答案 1 :(得分:0)

Sub DeletingEmptyPages()

Dim i As Long

For i = Sheets.count To 1 Step -1
    If WorksheetFunction.CountA(Sheets(i).Range("D14:K25, D27:K27, D29:K31, D34:K34, D36:K52, D55:K55, D57:K57, D59:K66, D68:K68, D70:K70 "), "") >= 368 Then
        If Sheets.count > 1 Then
            Application.DisplayAlerts = False
            Sheets(i).Delete
            Application.DisplayAlerts = True
        Else
            MsgBox "Only 1 sheet left"
            Exit Sub
        End If
    End If
Next i
End Sub