0

我在 Excel 方面非常缺乏经验,并且在编写宏时遇到了问题。无论我是否设置断点并跳过,它都会停止而没有任何错误对话框。

我错过了什么吗?我必须明确打开错误消息吗?

像这样的东西,在一个模块中:

Function Provoke(XYZ As Integer) As Integer
   Provoke = XYZ / 0
End Function

该函数用于单元格内的公式中,如下所示

=Provoke(4711)

我怎样才能让它抱怨被零除?

4

2 回答 2

4

如果从作为 UDF 的工作表调用的函数中发生错误,您将不会看到任何错误消息 - 您只会收到一个 #VALUE 错误返回到单元格

如果您从 VBA 中的 Sub 调用相同的函数,您将看到错误。

如果您希望能够返回更具体的错误消息,则需要进行更多编码。

例如

Function Provoke(XYZ As Integer)

   On Error GoTo haveError
   Provoke = XYZ / 0
   Exit Function

haveError:
    'what type of error did we get?
    Select Case Err.Number
        Case 11: Provoke = CVErr(xlErrDiv0)
        Case Else: Provoke = "Error!"
    End Select

End Function

一个很好的参考:http ://www.cpearson.com/excel/ReturningErrors.aspx

于 2017-09-01T19:27:49.453 回答
1
于 2017-09-01T19:31:41.373 回答