我一直在与vba争夺一点,令人惊讶的是它并没有变得更好。 我编写了以下代码,因此我可以为对象创建一个特殊的比较运算符。
Public Function myEquals(v As CCtypestore) As Boolean
If v Is Nothing Then
myEquals = False
Return
End If
If Me.Acronym = v.Acronym Then
myEquals = True
Return
End If
myEquals = False
Return
End Function
我传入的对象v目前没什么,所以我有点期待结果是一个微不足道的错误。令人惊讶的是,我得到一个错误返回没有gosub。任何线索可能是为什么?
答案 0 :(得分:14)
删除Return
语句!
在VBA中,您使用行myEquals = ...
设置返回值。
总而言之,您可以将功能缩减为以下代码:
Public Function myEquals(v As CCtypestore) As Boolean
If Not v Is Nothing Then
myEquals = (Me.Acronym = v.Acronym)
End If
End Function
或者,使用此:
Public Function myEquals(v As CCtypestore) As Boolean
On Error Goto ErrorHandler
myEquals = (Me.Acronym = v.Acronym)
Exit Function
ErrorHandler:
myEquals = False
End Function
Return
是一个古老的遗物,如果你想在代码中直接跳转,即建立意大利面条代码!请参阅帮助文件中的此示例:
Sub GosubDemo()
Dim Num
' Solicit a number from the user.
Num = InputBox("Enter a positive number to be divided by 2.")
' Only use routine if user enters a positive number.
If Num > 0 Then GoSub MyRoutine
Debug.Print Num
Exit Sub ' Use Exit to prevent an error.
MyRoutine:
Num = Num/2 ' Perform the division.
Return ' Return control to statement.
End Sub ' following the GoSub statement.
答案 1 :(得分:6)
使用Exit Function
代替Return
。
您还可以通过使用
之类的结构来避免使用Exit Function
If .... Then
'some code
ElseIf...Then
'some other code
ElseIf...Then
'etc
Else
'final
End if