VBA替换Div/0错误值代码仅首个循环生效无报错问题求助
问题原因及修复代码
核心问题点
- 语法结构错误:第一段
With语句结束后未补充End With,导致第二段With逻辑被嵌套在第一段的作用域中,无法正常执行对应区域的操作 - 参数匹配错误:你使用的
SpecialCells(xlConstants, xlErrors)仅能识别单元格内手动输入的常量类错误值,而#DIV/0!属于公式计算生成的错误值,需要使用xlFormulas参数才能被正确识别捕获
修复后完整代码
Dim MyRange As Range ' 处理B30:D44区域 With wbMe.Sheets("page3").Range("B30:D44") .EntireRow.Hidden = False On Error Resume Next ' 同时捕获常量错误和公式错误 Set MyRange = Union(.SpecialCells(xlConstants, xlErrors), .SpecialCells(xlFormulas, xlErrors)) On Error GoTo 0 If Not MyRange Is Nothing Then MyRange.ClearContents End If End With ' 补充缺失的结束语句 ' 处理B76:K89区域 With wbMe.Sheets("page3").Range("B76:K89") .EntireRow.Hidden = False On Error Resume Next Set MyRange = Union(.SpecialCells(xlConstants, xlErrors), .SpecialCells(xlFormulas, xlErrors)) On Error GoTo 0 If Not MyRange Is Nothing Then MyRange.ClearContents End If End With
补充说明
如果确定对应区域的错误值全部由公式计算产生,也可以删掉xlConstants相关的判断,仅保留SpecialCells(xlFormulas, xlErrors)即可进一步简化代码。
内容的提问来源于stack exchange,提问作者Przemek Dabek
相关产品推荐
相关产品推荐

