gpt4 book ai didi

function - Excel VBA : Special Types - Functions as Arguments of Functions

转载 作者:行者123 更新时间:2023-12-01 16:41:57 26 4
gpt4 key购买 nike

VBA 中的函数没有特殊类型。我很难理解如何在 Excel VBA 中将函数作为参数添加到函数中。

我想要完成的是这样的事情:

function f(g as function, x as string) as string
f = g(x)
end function

目前,我有一组小函数,它们都在重复自身,但只调用一个特定函数。

最佳答案

在您的代码中,函数 g 接受一个字符串参数并返回一个字符串。我建议您创建一个名为 IStringFunction 的类模块来充当所有函数都支持的接口(interface)的定义,因此:

类模块:IStringFunction

Public Function Evaluate(ByVal s As String) As String
End Function

然后,创建几个实现此接口(interface)的示例函数:

类模块:HelloStringFunction

Implements IStringFunction

Public Function IStringFunction_Evaluate(ByVal s As String) As String
IStringFunction_Evaluate = "hello " & s
End Function

类模块:GoodbyeStringFunction

Implements IStringFunction

Public Function IStringFunction_Evaluate(ByVal s As String) As String
IStringFunction_Evaluate = "goodbye " & s
End Function

...最后,一些测试代码来练习这些功能:

(标准)模块:测试

Sub Test()

Dim oHello As New HelloStringFunction
Dim oGoodbye As New GoodbyeStringFunction

MsgBox Evaluate(oHello, "gary")
MsgBox Evaluate(oGoodbye, "gary")

End Sub

Private Function Evaluate(ByVal f As IStringFunction, ByVal arg As String) As String
Evaluate = f.Evaluate(arg)
End Function

请注意,实现该接口(interface)的类必须具有名为 <Interface>_<Method> 的方法如上例所示,不仅仅是 <Method>正如您所期望的。

下载simple demointermediate demo这里

关于function - Excel VBA : Special Types - Functions as Arguments of Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118344/

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