首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA未找到单元格错误xlCellTypeBlanks

VBA未找到单元格错误xlCellTypeBlanks
EN

Stack Overflow用户
提问于 2020-09-12 17:46:13
回答 3查看 312关注 0票数 0

我有下面的Sub,它遍历了许多工作表,应该删除范围内的任何空行。有时它会工作得很好,但有时它会给我一个“没有找到单元错误”并失败。我不明白为什么。

错误出现在Set r = Range("B2:B" & counter).SpecialCells(xlCellTypeBlanks)

我试图通过一个if语句来捕获这个错误,但是通过这样做,例程不会删除任何东西,因为r当然什么都不是。

考虑到每次运行宏时空白行可能位于不同的位置,是否有更简单的方法从多个选项卡中删除空白行。

代码语言:javascript
运行
复制
Sub RemoveBlanks()

Dim ws As Worksheet
Dim counter As Long
Dim r As Range
Dim cell As Range

For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Summary" Then
        ws.Activate
        counter = ws.Range("A" & Rows.Count).End(xlUp).Row
        Set r = Range("B2:B" & counter).SpecialCells(xlCellTypeBlanks)
            If r Is Nothing Then
                GoTo test
            End If
        r.EntireRow.Delete shift:=xlShiftUp
        
    End If
test: Next ws

Worksheets("Summary").Activate

End Sub
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-09-12 18:15:38

当单元格中从未存在任何数据时,SpecialCells(xlCellTypeBlanks)将失败。这样做会更安全:

代码语言:javascript
运行
复制
For i = counter To 2 Step -1
   If LenB(Cells(i, 2)) = 0 Then Cells(i, 2).Entirerow.Delete Shift:=xlShiftUp
Next

如果你怀疑单元格中有空格,你可以申请

代码语言:javascript
运行
复制
... LenB(Trim(Cells(i, 2)) ...
票数 1
EN

Stack Overflow用户

发布于 2020-09-12 17:55:43

请这样试一试:

代码语言:javascript
运行
复制
'your code...
 On Error Resume Next
  Set r = Range("B2:B" & counter).SpecialCells(xlCellTypeBlanks)
 On Error GoTo 0
 If Not r Is Nothing Then  r.EntireRow.Delete shift:=xlShiftUp
'your code...

无论如何,这种方式比在范围内的每个单元格之间迭代更快

票数 1
EN

Stack Overflow用户

发布于 2020-09-12 18:07:27

如果没有空单元格,您将得到一个错误,如果有错误,可以继续下一步。

代码语言:javascript
运行
复制
    Sub Button1_Click()
    Dim sh As Worksheet
    
    For Each sh In Sheets
        On Error Resume Next
        If sh.Name <> "Summary" Then
            With sh
                .Range("B2:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
            End With
        End If
    Next
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63858986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档