1004错误:没有找到细胞,容易解决?

Lew*_*lop 5 debugging excel vba excel-vba

在我的宏中,我有一个查看范围的段,找到并填充空白单元格.

Range("E10:A" & CStr(bottom - 1)).Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Value = "N/A"
Run Code Online (Sandbox Code Playgroud)

哪里

bottom = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
Run Code Online (Sandbox Code Playgroud)

当空白单元格存在于该范围内时,这非常有效,但会抛出"1004错误:未找到单元格".在specialcells.select行.我无法想出一个简单的方法来解决这个问题.

我知道我可以在范围内运行循环来首先检查空白单元格,但我觉得这种方法会很慢而且很笨重.

有没有人有更快和/或更简单的解决方案?

PS我知道我可以巩固我上面的代码行,我在这里简单地将它放在这里以便更容易理解;

    Range("E10:A" & CStr(bottom - 1)).SpecialCells(xlCellTypeBlanks).Value = "N/A"
Run Code Online (Sandbox Code Playgroud)

小智 13

你可以做些什么来避免错误弹出是添加一个错误处理程序

例如:

Sub Main()
    On Error GoTo NoBlanks
    Range("A1:A10").SpecialCells(xlCellTypeBlanks).Value = "N/A"

NoBlanks:
    Resume Next
    ' or add code here to execute when there are no empty cells
End Sub
Run Code Online (Sandbox Code Playgroud)

  • @mehow没问题 - 我向你提供了解释downvote的礼貌,你可以根据自己的意愿采取行动(或不采取行动). (6认同)
  • 就个人而言,我会使用`On Error Resume Next`进行内联处理,但是嘿.;) (4认同)
  • @brettdj我不会根据您的喜好修改我的正确答案.这是我的答案,这就是我如何解决它,如果你认为另一种方式比自己回答更好. (3认同)
  • @rory你不应该在`NoBlanks:`中测试错误号`1004`,以确保你出于正确的原因派遣到哪里,并且可能理想地将`On Erro Goto NoBlanks`隔离到`SpecialCells`行?这两个都应该增加错误处理的可靠性(不会忽略意外的错误,只会忽略预期的错误),而不能使用`on next resume next`. (3认同)
  • @Yakk不是真的.1004是最通用的错误消息,所以它不会告诉我实际上出了什么问题 - 如果工作表受到保护,你会得到相同的错误号.我使用OERN并将特殊单元分配给范围变量.如果之后没什么,你知道出了什么问题.:) (3认同)