下面我们就来看看在Excel VBA两种方案。一个程序只是简单地忽略错误。其他程序在命中错误继续在指定行执行。

现状:

这两个程序计算数字的平方根。

Error Handling in 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编辑器和测试程序。

结果:

On Error Resume Next Result

结论: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编辑器和测试程序。

结果:

On Error GoTo Result

On Error GoTo Result

On Error GoTo Result