excel - 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
解决方案
- 避免
Select
。 Range
用工作表限定ws
。- 首先测试空白单元格。
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
推荐阅读
- android - android sdk 的 Systrace 不支持多设备?
- reactjs - redux 状态中的数组未定义
- azure - Azure 更新管理 - 自动载入 VM
- python - Git 忽略 Windows 10 下的 gitignore 文件
- flutter - 通过 HAProxy 从颤振到 IPFS 的 REST 调用不起作用
- java - 来自谷歌地图位置的地址行
- reactjs - 使用 Flickity 在 React 中旋转木马
- python - 我可以使用 groupby 在 Pandas 数据框中创建每行是运行列表的列吗?
- eve - 启用软删除后如何在 Python Eve 中永久删除资源?
- angular - 云函数:oncall 函数在运行 Promise 链之前返回 null