如何将多个参数传递给VBA中的过程?

Sam*_*aan 9 excel vba excel-vba

我试图将两个字符串参数传递给Sub,但它不允许我这样做.我使用的方法如下.

Sub callByValue( str1 As String, str2 As String)
MsgBox str1
MsgBox str2

End Sub
Run Code Online (Sandbox Code Playgroud)

调用宏:

 Dim s1, s2 As String
 callByValue(s1,s2)
Run Code Online (Sandbox Code Playgroud)

在调用时callByvalue,它会抛出一个编译器错误.

Sid*_*out 15

您需要删除括号

callByValue s1, s2
Run Code Online (Sandbox Code Playgroud)

还记得在VBA中,当你说Dim s1, s2 As String只会s2被声明为String,第一个将被声明为Variant

我注意到一件事是,你没有指定的值s1,并s2调用子之前.你们两个都会得到一个空白.

例如,这样做.

Sub Sample()
    Dim s1 As String, s2 As String
    s1 = "Blah": s2 = "Blah Blah"
    callByValue s1, s2
End Sub
Run Code Online (Sandbox Code Playgroud)


jac*_*ouh 5

这是 ByVal 调用子程序的更好定义。

Sub callByValue(ByVal str1 As String, ByVal str2 As String)
  MsgBox str1
  MsgBox str2
End Sub

Sub sof20285505callByVal()
  Dim s1, s2 As String
  callByValue s1, s2
End Sub
Run Code Online (Sandbox Code Playgroud)