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

时间:2015-11-03 10:16:41

标签: excel vba excel-vba ms-word word-vba

我想更新Sub中的单个(1/3)变量。

已经分配了3个变量,但我想更新其中一个变量。

请参阅下面的脚本,了解在不同string

中的潜点之间传递Macros的简单示例

在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中创建另一个子,然后我可以传递string,然后将其分配给Public变量。

如果没有别的办法吗?

我虽然喜欢:

Sub Sub3()

SomeText = "New Text"

Call Sub2(r1:=SomeText)

End Sub

1 个答案:

答案 0 :(得分:2)

如果您像这样定义您的子,您可以使用您的建议:

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因为你需要测试的是你的调用中使用IsMissing()方法存在的参数,但是为此需要将参数定义为Variant < / p>

  3. 对于你的过程中的3个参数,就像这样:

    If Not IsMissing(r1) Then PassedText1 = r1