You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA筛选上月数据报错‘NO CELLS WERE FOUND’,求助添加条件

解决VBA代码"NO CELLS WERE FOUND"报错问题

嘿,我懂你现在的困扰——运行这段筛选排除上月日期的VBA代码时,一旦没有符合条件的数据,就弹出"NO CELLS WERE FOUND"错误,加了else msgbox也没用对吧?其实问题出在:当没有可见数据行时,SpecialCells(xlCellTypeVisible)找不到目标单元格就会触发错误。咱们给代码加个判断逻辑和错误防护,就能完美解决这个问题了。

修改后的完整代码

Sub ExclusionDates()
    Dim sh As Worksheet, ws As Worksheet
    Dim filteredRange As Range
    
    Set sh = Worksheets("Raw Data") ' 设置要筛选的工作表
    Set ws = Worksheets("Exclusion") ' 设置要粘贴的工作表
    
    ' 清空粘贴工作表中A到AD列的已有内容
    ws.Range("AD1", ws.Cells(ws.Rows.Count, "A").End(xlUp)).ClearContents
    
    ' Application.ScreenUpdating = False ' 如需提速可以取消注释
    
    With sh ' 引用要复制数据的工作表
        With .Range("AD1", .Cells(.Rows.Count, "A").End(xlUp)) ' 引用要筛选的单元格区域
            .AutoFilter Field:=10, Criteria1:=xlFilterLastMonth, Operator:=xlFilterDynamic
            
            ' 判断是否有除表头外的筛选结果(Subtotal(103)统计可见单元格数量,表头算1)
            If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then
                ' 先把可见单元格(除表头)赋值给变量,避免直接操作报错
                On Error Resume Next ' 临时开启错误捕获
                Set filteredRange = .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible)
                On Error GoTo 0 ' 关闭错误捕获
                
                If Not filteredRange Is Nothing Then
                    ' 复制筛选结果到粘贴工作表的最后一行下方
                    .SpecialCells(xlCellTypeVisible).Copy ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(0)
                    ' 删除筛选出来的行
                    filteredRange.EntireRow.Delete
                End If
            Else
                ' 没有找到符合条件的数据时,弹出提示
                MsgBox "未找到上月日期的数据,无需执行后续操作!", vbInformation
            End If
        End With
        .AutoFilterMode = False ' 关闭筛选
    End With
    
    ' Application.ScreenUpdating = True ' 如需提速可以取消注释
End Sub

关键修改点说明

  • 添加了筛选结果判断:通过Subtotal(103, .Cells) > 1确认除了表头外是否有有效数据,没有的话直接弹出提示,避免后续无效操作。
  • 增加了Range变量和错误捕获:把可见数据行赋值给filteredRange,并用If Not filteredRange Is Nothing判断变量是否有效,彻底避免"NO CELLS WERE FOUND"错误。
  • 补全了缺失的End If:你原来的代码里注释掉了一个End If,这会导致逻辑结构错误,现在已经补全。
  • 新增无数据提示:当没有上月日期的数据时,会弹出友好提示,让你清楚当前状态。

这样修改后,不管有没有符合条件的数据,代码都能平稳运行啦!

内容的提问来源于stack exchange,提问作者aicirtap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:44:53