gpt4 book ai didi

vba - 是否可以创建一个返回对象的函数?

转载 作者:行者123 更新时间:2023-12-04 19:55:58 25 4
gpt4 key购买 nike

我正在开发一个宏,需要使用以下方法引用大量命名范围:

ThisWorkbook.Names("$NAMEDRANGE$").RefersToRange.$METHOD$

我认为如果我可以创建一个可以按如下方式使用的函数,可能会使代码更易于阅读/使用:

NamedRange("$NAMEDRANGE$").$METHOD$

在不知道它是否有效的情况下,我尝试了以下方法:

Function NamedRange(ByVal sName As String) As Object
return ThisWorkbook.Names(sName).RefersToRange

End Function

这甚至不会编译,产生一个

Expected: end of statement

我想我可能需要使用类模块,但我对它们不是很熟悉。这是可能的,还是我应该在每一行上拼出整个引用文献?


我在 C 上花了太多时间。这段代码运行得很好:

Function NamedRange(ByVal sName As String) As Object
Set NamedRange = ThisWorkbook.Names(sName).RefersToRange

End Function

感谢您的帮助!

最佳答案

Return 语句确实存在于 VBA 中,但它与过时的 GoSub 语句结合使用,早于 SubFunction 范围是一件事 - 提示 QBasic 内存...

    foo = 42
GoSub Increment
Debug.Print foo ' prints 43
Exit Sub
Increment:
foo = foo + 1
Return

因此,VBA 实际上期望语句在 Return 标记之后立即结束,因此出现“预期:语句结束”错误。

这不是你想要的。在 VBA 中,Function(和 Property Get)成员的返回值通过逐字分配给成员标识符来分配:

Function GetFoo() As Long
GetFoo = 42
End Function

由于您要返回对象引用,因此需要 Set 关键字:

Function GetBar() As Something
Set GetBar = New Something
End Function

请注意,这样做不会立即返回调用者 - 如果您需要立即退出函数作用域,则需要显式地退出函数

关于vba - 是否可以创建一个返回对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50861808/

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