【问题标题】:Global Variable in Userform用户窗体中的全局变量
【发布时间】:2013-12-27 20:20:27
【问题描述】:

我在论坛中搜索了这个并找到了一些答案,但对我没有用。

我有两个用户窗体。

在第一个中,我给一个名为 Word 的变量赋值。

在第二个中,我有一个标签,我需要将标题变成变量 Word。

例子:

Public Word as String

Private Sub Userform1_Activate
   Word = "Today Is Saturday"
End Sub

Private Sub Userform2_Activate
   Label1.Caption = Word
End Sub

但这不起作用。标签标题的价值为零。 有人可以帮我解决这个问题吗?

谢谢。

First Form

Private Sub CommandButton5_Click()

Db = "C:\Users\Desktop\db.txt"

Set File1 = CreateObject("Scripting.FileSystemObject")
Set File2 = File1.OpenTextFile(Db, 1)

Do Until File2.AtEndOfStream

If (File2.Readline = TextBox1) Then Exit Do
If File2.AtEndOfStream Then WordNotFound.Show
If File2.AtEndOfStream Then TextBox1.Value = ""
If File2.AtEndOfStream Then Exit Sub

Loop

Word = File2.Readline

MsgBox Word

TextBox1.Value = ""

End Sub

第二种形式

Private Sub UserForm_Click()

Label1.Caption = Word

End Sub

【问题讨论】:

  • 这应该可以。你能显示显示用户表单的顺序吗?
  • 我已将它们添加到我的第一篇文章中,看看。
  • 查看我的示例代码。希望这会有所帮助。

标签: vba global-variables userform


【解决方案1】:

正如我在评论中所说,您的方法应该有效。这是我尝试过的测试代码

1- 在Module1

Public Word As String

2- 创建 2 个用户表单 - UserForm1UserForm2

2a- 在 UserForm1 中

Private Sub UserForm_Activate()
    Word = "This is Saturday"
End Sub

2b- 在 UserForm2 中

Private Sub UserForm_Activate()
    Label1.Caption = Word
End Sub

3- 然后在ThisWorkbook

Private Sub Workbook_Open()
    UserForm1.Show
    UserForm2.Show
End Sub

所以当你关闭 UserForm1 时,UserForm2 会显示如下

【讨论】:

  • Pankaj Jaju,您的代码运行良好。但我打算只使用 Useforms。我不能只通过使用两个用户表单来做到这一点吗?因为我想稍后创建一个exe文件。如果它使用“ThiwWorkbook”和一个模块,我不确定它是否可能
  • 我只给你看了我的测试代码。你可以在任何你想要的地方实现.Show。例如,您可以在 UserForm1 代码的末尾使用 UserForm2.Show。只需确保在调用 UserForm2 之前设置了 Word
  • 哦,谢谢,我明白了!但是 Public Word as String 语句呢?是否需要放在单独的模块中?
  • 不一定。您可以在 UserForm 代码的开头使用它。
  • 嗨,两个用户表单是两个不同的对象。变量Word 必须定义为Public 并假定它在Userform1 中定义。在其他任何地方,这个变量都可以使用“点符号”作为Userfrom1.Word 访问。
猜你喜欢
  • 2016-08-16
  • 2014-01-08
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多