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)
这是 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)