我正在尝试将两个字符串参数传递给Sub,但它不允许我这样做。我使用的方法如下。
Sub callByValue( str1 As String, str2 As String)
MsgBox str1
MsgBox str2
End Sub
调用宏:
Dim s1, s2 As String
callByValue(s1,s2)
在调用callByvalue
时,它会抛出编译器错误。
答案 0 :(得分:15)
您需要删除括号
callByValue s1, s2
另请记住,在VBA中,当您说Dim s1, s2 As String
时,只有s2
将被声明为String
而第一个将被声明为Variant
我注意到的另一件事是你在调用sub之前没有分配s1
和s2
的值。你们两个都会得到一个空白。
例如,这样做。
Sub Sample()
Dim s1 As String, s2 As String
s1 = "Blah": s2 = "Blah Blah"
callByValue s1, s2
End Sub
答案 1 :(得分:3)
这是ByVal call sub的更好定义。
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