Excel VBA如何防止/捕获参数中的数据类型不匹配错误
我有一个Excel VBA用户定义函数,其中我为函数的一个参数声明了一个数据类型。我希望能够捕获潜在的错误,以防 有人没有输入正确的数据类型。看起来应该很简单,但无法理解 请参阅下面的示例,其中我使用了一个子过程来演示该问题Excel VBA如何防止/捕获参数中的数据类型不匹配错误,vba,excel,type-mismatch,Vba,Excel,Type Mismatch,我有一个Excel VBA用户定义函数,其中我为函数的一个参数声明了一个数据类型。我希望能够捕获潜在的错误,以防 有人没有输入正确的数据类型。看起来应该很简单,但无法理解 请参阅下面的示例,其中我使用了一个子过程来演示该问题 Sub MyTest() MsgBox myfunction("123a") End Sub Function myfunction(mynum As Double) As String On Error Resume Next If IsNum
Sub MyTest()
MsgBox myfunction("123a")
End Sub
Function myfunction(mynum As Double) As String
On Error Resume Next
If IsNumeric(mynum) Then
myfunction = "ok"
Else
myfunction = "not ok"
End If
End Function
额外注意:虽然我使用一个子过程来演示这个问题,但实际上我使用的是一个用户定义的函数,并从我的工作表中调用该函数。因此,在调用“MyFunction”过程之前,在“MyTest”过程中添加保护并非易事。请查看,因为您已将参数键入为
Double
使用非数值调用MyFunction
的任何尝试都将失败,并且不会调用MyFunction
。当用作自定义项时,这将产生一个#值代码>错误。如果必须处理myFunction
中的错误,请将mynum
声明为Variant
,并使用TypeName
确定传递的实际类型。这很有意义,感谢您查看,因为您已将参数键入为Double
使用非数值调用myFunction
将失败,并且不会调用myFunction
。当用作自定义项时,这将产生一个#值代码>错误。如果必须处理myFunction
中的错误,请将mynum
声明为Variant
,并使用TypeName
确定传递的实际类型。这很有意义,谢谢