首页 > 解决方案 > excel vba删除多个工作表范围内的空白行

问题描述

您好,如果 A 列中的数据为空白,我正在尝试删除 7 到 31 范围内的行。但是,我希望它运行除我指定的工作表以外的所有工作表。我已经尝试了代码,但它不起作用,谁能给我一个关于我哪里出错的指针?如果没有空白单元格,我还应该进行错误处理吗?

Sub deletespaces()
Dim ws As Worksheet
Dim rng As Range

For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Menu" And ws.Name <> "Paste here" And ws.Name <> "Data" Then

 Range("a7:A31").Select
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 End If
Next ws
End Sub

标签: excelvba

解决方案


  1. 避免Select
  2. Range用工作表限定ws
  3. 首先测试空白单元格。
If ws.Name <> "Menu" And ws.Name <> "Paste here" And ws.Name <> "Data" Then
    Dim visibleCells As Range  
    Set visibleCells = Nothing

    On Error Resume Next
    Set visibleCells = ws.Range("a7:A31").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0

    If Not visibleCells Is Nothing Then
        visibleCells.EntireRow.Delete
    End If
End If

推荐阅读