将几个参数传递给sub

问题描述 投票:1回答:2

搜索后,似乎没有人需要将3个以上的参数传递给子例程。

据我所知,VBA子例程(无效)只能有2个参数(我尝试3+时出错),函数(可以接受2个以上参数)必须返回一个值给它们。 >

我多年来一直在使用小技巧来解决这个问题,但想知道是否有更好的方法可以将3个以上的参数传递给子对象或调用void函数。我目前所做的示例:

Private Function Foo(str1 as String, Optional str2 as string = "", Optional str3 as string = "") as Boolean
    [Do something with parameters, like send an email with programmatic parameters 'to', 'body', and 'subject']
End Function

Public Sub Bar()
    Dim dummyVal as Boolean
    [Do something]
    dummyVal = Foo("[email protected]","Report [Today's Date]","Hello [Customer Name]...")
    [Do something]
End Sub

也可以通过使用]来完成>

If Foo(args) Then
End If

这两个work

,但是如果有人尝试阅读我的代码,可能会造成混淆。有没有一种方法可以将3个以上的参数传递给VBA子程序,或者摆脱“ dummyVal”语法?

搜索后,似乎没有人需要将3个以上的参数传递给子例程。据我所知,VBA子例程(无效)最多只能有2个参数(我尝试3+时出错),以及...

excel vba syntax
2个回答
1
投票

子没有2参数限制:

Sub Runner()
    Test 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
End Sub

Sub Test(a, b, c, d, e, f, g, h, i, j)
    Debug.Print Join(Array(a, b, c, d, e, f, g, h, i, j), ",")
End Sub

0
投票

蒂姆·威廉姆斯的答案是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.