将3个值中的1个传递给一个Sub

我想更新Sub中的一个(1的3)variables。

这3个variables已经被分配了,但是我想更新一个variables。

请参阅下面的脚本,了解在不同Macros subs之间传递string的一个简单示例

在Macro1中

 Sub Sub1() Text1 = "First Text" Text2 = "Second Text" Text3 = "Third Text" Call Macro2.Sub2(Text1, Text2, Text3) End Sub 

在Macro2中

 Public PassedText1, PassedText2, PassedText3 As String Sub Sub2(ByVal r1 As String, ByVal r2 As String, ByVal r3 As String) PassedText1 = r1 PassedText2 = r2 PassedText3 = r3 End Sub '======================= 

我知道我可以在Macro2创build另一个子,然后我可以传递一个string ,然后将其分配给Publicvariables。

如果没有另一种方式?

我虽然是这样的:

 Sub Sub3() SomeText = "New Text" Call Sub2(r1:=SomeText) End Sub 

如果你像这样定义你的sub,你可以使用你的build议:

 Sub Sub2(Optional ByVal r1 As Variant, Optional ByVal r2 As Variant, Optional ByVal r3 As Variant) 

所以,2改变了每个参数的Optional ByVal r1 As Variant

  1. Optional说明了一切

  2. As Variant因为你需要testing的是参数是存在于你的调用IsMissing()方法,但为此参数需要被定义为一个变种

所以像这样你的proc中的3个参数:

 If Not IsMissing(r1) Then PassedText1 = r1