在不同模块中使用来自 Useform 的变量
Use Variable from Useform in different Module
我找不到我要找的东西,但也许你能帮我。
我的问题是我有一个用户表单,用户必须在其中进行输入。我想存储该输入并稍后在不同的模块中使用它,即将它粘贴到一个单元格中。简单的解决方案应该是将其设为 public 变量,但由于某些原因它不起作用。这是我尝试使用的代码:
用户表单:
Option Explicit
Public VarBezeichnungReifenliste As String
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Call Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
模块:
Option Explicit
Public Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
错误信息说变量没有声明(VarBezeichnungReifenliste
)所以我想我没有足够public声明它?
使用 Userform1.Show
通过工作表上的一个简单按钮打开用户表单本身。所以这里没什么特别的。
VBA 长期存储变量很奇怪。作为一般经验法则,如果您能够在保存变量和需要获取值之间与 Excel 工作簿进行交互,则不能指望该变量仍然保持其值。
解决此问题的最安全方法是将您的值存储在隐藏工作表的单元格中,并在需要时从那里读取它。
足够公开
解决方案 1
UserForm1:
Option Explicit
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Module1.Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
模块 1:
Option Explicit
Public VarBezeichnungReifenliste As String
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
结论
只需移动变量声明
Public VarBezeichnungReifenliste As String
到 'normal' 模块。
解决方案2
UserForm1:
Option Explicit
Public VarBezeichnungReifenliste As String
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Module1.Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
模块 1:
Option Explicit
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = UserForm1.VarBezeichnungReifenliste
Worksheets("XY").Cells(1, 1).Select
End Sub
结论
只需使用
Worksheets("XY").Cells(1, 1).Value = UserForm1.VarBezeichnungReifenliste
而不是
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
在模块 1 中。
解决方案 3
UserForm1:
Option Explicit
Public VarBezeichnungReifenliste As String
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
结论
将所有内容移至 UserForm1。
我找不到我要找的东西,但也许你能帮我。
我的问题是我有一个用户表单,用户必须在其中进行输入。我想存储该输入并稍后在不同的模块中使用它,即将它粘贴到一个单元格中。简单的解决方案应该是将其设为 public 变量,但由于某些原因它不起作用。这是我尝试使用的代码:
用户表单:
Option Explicit
Public VarBezeichnungReifenliste As String
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Call Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
模块:
Option Explicit
Public Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
错误信息说变量没有声明(VarBezeichnungReifenliste
)所以我想我没有足够public声明它?
使用 Userform1.Show
通过工作表上的一个简单按钮打开用户表单本身。所以这里没什么特别的。
VBA 长期存储变量很奇怪。作为一般经验法则,如果您能够在保存变量和需要获取值之间与 Excel 工作簿进行交互,则不能指望该变量仍然保持其值。
解决此问题的最安全方法是将您的值存储在隐藏工作表的单元格中,并在需要时从那里读取它。
足够公开
解决方案 1
UserForm1:
Option Explicit
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Module1.Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
模块 1:
Option Explicit
Public VarBezeichnungReifenliste As String
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
结论
只需移动变量声明
Public VarBezeichnungReifenliste As String
到 'normal' 模块。
解决方案2
UserForm1:
Option Explicit
Public VarBezeichnungReifenliste As String
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Module1.Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
模块 1:
Option Explicit
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = UserForm1.VarBezeichnungReifenliste
Worksheets("XY").Cells(1, 1).Select
End Sub
结论
只需使用
Worksheets("XY").Cells(1, 1).Value = UserForm1.VarBezeichnungReifenliste
而不是
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
在模块 1 中。
解决方案 3
UserForm1:
Option Explicit
Public VarBezeichnungReifenliste As String
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
结论
将所有内容移至 UserForm1。