ForEach在错误转到继续下一个不工作

我试图按照这个教程 。 我用下面的点击处理程序创build了一个button:

Private Sub SqrtButton_Click() Dim rng As Range, cell As Range Set rng = Selection For Each cell In rng On Error GoTo InvalidValue: cell.Value = Sqr(cell.Value) Next cell Exit Sub InvalidValue: MsgBox Err.Number & " " & Err.Description & " at cell " & cell.Address Resume Next End Sub 

根据教程,程序应该显示单元格B4和B5的两个错误消息,并replace其余单元格中的值。 但是,当我运行代码时,只有第一个单元格值被replace(B2),并且不显示错误消息。

这个例子可以下载 ,也不能用。

这个代码有什么问题?

您的范围是基于select(突出显示的单元格),select全部5个单元格(B2:B6),然后单击button。 当我这样做的时候,代码似乎对我很好。

善良,留下反馈! 🙂

我知道这个问题已经得到解答了,但是On Error GoTo语法可以被认为是一个好的做法, 如果可以,请始终避免。 这里是相同的代码,但重写,以避免On Error GoTo语句:

 Private Sub SqrtButton_Click() Dim rng As Range, cell As Range Set rng = Selection For Each cell In rng.Cells If IsNumeric(cell.Value) And cell.Value >= 0 Then cell.Value = Sqr(cell.Value) Else MsgBox "Invalid Value [" & cell.Value & "] at cell " & cell.Address(0, 0) End If Next cell End Sub