我想把两个字符串参数传递给一个子程序,但是它不允许我这样做。我使用的方法如下所示。
Sub callByValue( str1 As String, str2 As String)
MsgBox str1
MsgBox str2
End Sub
调用宏:
Dim s1, s2 As String
callByValue(s1,s2)
在调用callByvalue
时,它会抛出编译器错误。
你需要移除括号
callByValue s1, s2
在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
这是一个更好的 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
dim s1, s2 as String
只声明了s2
为字符串类型,而s1
则为变量类型。 - user2140173