在vba中传递表单信息

时间:2018-08-05 06:28:49

标签: excel vba excel-vba

我有一个子,并在其中定义了2个变量,并以我已经创建的形式将其中的1个字符串分配给文本框。

Sub test()

   dim x as string
   dim y as string
   x = "hello"
   y = "friends"

   myForm.textbox1.value = x
   myForm.show

End sub

现在该表单处于活动状态,并且该表单正在征求信息,并根据用户输入执行其他代码,我记得我的字符串y是相关的。但我在文本框中不需要它。我开始想知道的是:是否可以通过任何方式将数据传递到表单,以便表单{可以从子test()看到活动而无需将其分配给表单上的对象?

3 个答案:

答案 0 :(得分:3)

或者您可以使用UserForm对象的Tag属性

android:windowSoftInputMode="adjustPan"

通过这种方式,您可以在UserForm代码中按以下方式检索该值:

Sub test()

    dim x as string
    dim y as string
    x = "hello"
    y = "friends"

    With myForm
        .Tag = y ‘ “pass” the value of y to the form by storing it into its Tag property
        .textbox1.value = x
        .show
        y = .Tag ‘ assign y the value stored in the form Tag property 
    End With
End sub

答案 1 :(得分:2)

公共范围变量将对表单可见。可以在测试子项中为变量设置值。如果要在测试子项中分配的值,则希望测试子项在加载表单之前运行。

公共/全局变量在子模块外部的模块顶部声明。

在此处查看讨论:How do I declare a global variable in VBA?

答案 2 :(得分:1)

正如其他答案所建议的那样,您可以使用公共变量,但我也建议您看一下,也许可以使用公共属性。

属性与公共变量不同,因为有了属性,您可以在客户端获取或设置值时执行自己的代码。

Take a look at this post here on StackOverflow