Lyn*_*ott 1 excel vba excel-vba
我希望有人可以帮助我吗?我做了很多谷歌搜索,无法弄清问题是什么.我只涉足vba,所以我当然不是专家......
我试图在工作中的巨大电子表格中自动执行一些计算,我想我可能会遗漏一些非常愚蠢的东西.基本上,其中一个计算是一个单元格与另一个单元格的简单划分.当它遇到错误时,我希望它返回0.这是不断跳过的代码:
Sheets("Bridge").Range("W" & SumIfInt) = Application.WorksheetFunction.IfError(Sheets("Bridge").Range("AA" & SumIfInt) / Sheets("Bridge").Range("D" & SumIfInt), 0)
Run Code Online (Sandbox Code Playgroud)
我得到一个运行时错误6溢出
提前致谢
在编程时,最好先通过检查它的可能性来避免错误,而不是触发它然后处理它.在执行计算之前检查单元格是空还是零:
If IsEmpty(Sheets("Bridge").Range("D" & SumIfInt)) Or Sheets("Bridge").Range("D" & SumIfInt) = 0 Then
Sheets("Bridge").Range("W" & SumIfInt) = 0
Else
Sheets("Bridge").Range("W" & SumIfInt) = Sheets("Bridge").Range("AA" & SumIfInt) / Sheets("Bridge").Range("D" & SumIfInt)
End If
Run Code Online (Sandbox Code Playgroud)
On Error Resume Next基本上说"如果遇到错误就忽略它".这可能会导致各种意外问题,并且只能作为最后的手段使用.
另请查看VBA中的IsError函数.
尝试不使用If错误功能。如下所述,您应该非常谨慎地使用On error resume。
警告:On error resume next除非On error goto 0存在,否则将跳过所有错误情况以获取其余代码。另外,如果您想捕获特定的错误,可以使用相应地if error = 'number' then进行处理。与excel vba相比,在excel中更好地使用Application.worksheetfunction.iserror。
On error resume next
Sheets("Bridge").Range("W" & SumIfInt) = Sheets("Bridge").Range("AA" &
SumIfInt) / Sheets("Bridge").Range("D" & SumIfInt)
if err <>0 then
Sheets("Bridge").Range("W" & SumIfInt) = 0
end if
On error goto 0
Run Code Online (Sandbox Code Playgroud)