在Excel VBA错误处理
下面我们就来看看在Excel VBA两种方案。一个程序只是简单地忽略错误。其他程序在命中错误继续在指定行执行。
现状:
这两个程序计算数字的平方根。
平方根1将下面的代码行添加到“平方根1”命令按钮。
1.首先,我们声明两个Range对象。我们呼吁Range对象RNG以及细胞。
Dim rng As Range, cell As Range
2.我们初始化与所选择的范围中的范围对象RNG。
Set rng = Selection
3.我们想要计算在随机选择的范围内的每个单元的平方根(该范围可以是任何大小的)。在Excel VBA中,你可以使用对于每个Next循环这一点。添加以下代码行:
For Each cell In rng Next cell
注:RNG以及细胞随机选择了这里,你可以使用任何名字。
请记住,是指这些名字在你的代码的其余部分。
4.将下面的代码行添加到循环。
On Error Resume Next
5.接下来,我们计算一个值的平方根。在Excel VBA中,我们可以使用这个功能SQR。下面的代码行添加到循环。
cell.Value = Sqr(cell.Value)
6.退出Visual Basic编辑器和测试程序。
结果:
结论:Excel VBA中忽略了包含无效的值,如负数和文本的单元格。如果不使用“上的错误继续下一步”语句,你会得到两个错误。小心只能用“上的错误继续下一步”语句时,你肯定忽略的错误就可以了。
平方根2将下面的代码行添加到“平方根2”命令按钮。
1.相同的程序作为平方根1,但替代“上的错误恢复下一步”与:
On Error GoTo InvalidValue:
注:一个InvalidValue随机选择这里,你可以使用任何名字。
记得提及这个名字在你的代码的其余部分。
2.外对于每下一个循环中,第一添加以下代码行:
Exit Sub
如果没有这一行,代码(错误代码)的其余部分将被执行,即使没有错误! 3. Excel的VBA继续执行在开始与线“一个InvalidValue:”在命中一个错误(不要忘记冒号)。添加以下代码行:
InvalidValue:
4.我们保持我们的错误代码,简单的现在。我们展示了一些文本和发生错误的单元格的地址一个MsgBox。
MsgBox "can't calculate square root at cell " & cell.Address
5.添加以下行指示Excel的VBA执行错误代码后,恢复执行。
Resume Next
6.退出Visual Basic编辑器和测试程序。
结果: