我一直在与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
Run Code Online (Sandbox Code Playgroud)
我传入的对象v目前没什么,所以我有点期待结果是一个微不足道的错误.令人惊讶的是,我得到一个错误返回没有gosub.任何线索可能是为什么?
Pet*_*ert 15
删除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
Run Code Online (Sandbox Code Playgroud)
或者,使用这个:
Public Function myEquals(v As CCtypestore) As Boolean
On Error Goto ErrorHandler
myEquals = (Me.Acronym = v.Acronym)
Exit Function
ErrorHandler:
myEquals = False
End Function
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
用Exit Function而不是Return.
您也可以Exit Function通过使用类似的结构来 避免这些
If .... Then
'some code
ElseIf...Then
'some other code
ElseIf...Then
'etc
Else
'final
End if
Run Code Online (Sandbox Code Playgroud)