我找不到我想要的东西,但是也许您仍然可以帮助我。
我的问题是我有一个用户表单,用户必须在其中进行输入。我想存储该输入并稍后在其他模块中使用,即将其粘贴到单元格中。一个简单的解决方案应该是使其成为一个公共变量,但是由于某种原因它将无法工作。这是我尝试使用的代码:
用户表单:
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
),所以我想我没有足够公开地声明它?
使用Userform1.Show
通过工作表上的简单按钮打开用户窗体本身。所以在这里没什么好想的。
答案 0 :(得分:0)
VBA对于长期存储变量很奇怪。根据一般经验,如果您能够在保存的变量和需要获取值之间与Excel工作簿进行交互,则不能指望仍保持其值的变量。
解决此问题的最安全方法是将您的值存储在一个隐藏工作表的单元格中,并在需要时从那里读取。
答案 1 :(得分:0)
UserForm1 :
Option Explicit
Private Sub CommandButton3_Click()
VarBezeichnungReifenliste = TextBox1.Value
Module1.Übertragen
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Module1 :
Option Explicit
Public VarBezeichnungReifenliste As String
Sub Übertragen()
Worksheets("XY").Cells(1, 1).Value = VarBezeichnungReifenliste
End Sub
结论
只需移动变量声明
Public VarBezeichnungReifenliste As String
“正常”模块。
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
Module1 :
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
在Module1中。
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。