gpt4 book ai didi

excel - 是否可以将数组的字段传递给具有可变参数数组的函数?

转载 作者:行者123 更新时间:2023-12-04 15:52:27 27 4
gpt4 key购买 nike

我处于以下情况:我有一个函数,它接受类型为 variant 的 ParamArray,并通过执行 mergeToString 以特殊方式从其 ParamArray 中给定的关键字生成一个字符串。

Function function1(ParamArray var() As Variant) As String
For i = LBound(var) To UBound(var)
function1 = mergeToString(function1, CStr(var(i))
Next i
End Function

在另一个子例程中,我有一个从 VBA 中的 Split 函数获得的字符串数组,我想将其用作 function1 的输入

Sub displayFCTN1()
Dim arr() As String
arr() = Split("foo|bar", "|")
'and here I ran out of ideas...
Debug.Print function1(**???**)
End Sub

两条线

function1(**???**)
function1("foo","bar")

应该等同于第一个以某种方式使用 arr()。

在 Matlab 中,这相对容易 - 我知道,VBA 不是 Matlab,但作为对我的问题的扩展描述,这仍然可能有所帮助:您很可能通过在 Matlab

中使用冒号运算符来实现
function1(arr(:))

从那时起,数组 arr() 的字段算作“自由”参数。

在 VBA 中有类似的东西吗?我已经尝试过 ReDim,但不知何故没有完成这项工作(据我所试)。

感谢您的帮助!

最佳答案

需要测试,数组的第一项是否为数组:

Sub FFF()
MsgBox Func1("foo", "bar")
MsgBox Func1(Split("foo|bar", "|"))
End Sub

Function Func1$(ParamArray var() As Variant)
Dim s$, x%, args
args = IIf(IsArray(var(0)), var(0), var)
'//Do something
For x = 0 To UBound(args)
s = s & args(x) & "|"
Next
Func1 = Left$(s, Len(s) - 1)
End Function

关于excel - 是否可以将数组的字段传递给具有可变参数数组的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53332922/

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