gpt4 book ai didi

vba - 在我自己的 vba 函数中获得没有 gosub 的返回

转载 作者:行者123 更新时间:2023-12-04 04:10:23 24 4
gpt4 key购买 nike

我一直在与 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 目前是 Nothing ,所以我有点期望结果是一个微不足道的 False 。令人惊讶的是,我收到了一个错误 Return without gosub。知道为什么会这样吗?

最佳答案

删除 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.

关于vba - 在我自己的 vba 函数中获得没有 gosub 的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15225945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com