在其他模块中使用Useform中的变量

时间:2018-12-07 13:54:43

标签: excel vba userform

我找不到我想要的东西,但是也许您仍然可以帮助我。

我的问题是我有一个用户表单,用户必须在其中进行输入。我想存储该输入并稍后在其他模块中使用,即将其粘贴到单元格中。一个简单的解决方案应该是使其成为一个公共变量,但是由于某种原因它将无法工作。这是我尝试使用的代码:

用户表单

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通过工作表上的简单按钮打开用户窗体本身。所以在这里没什么好想的。

2 个答案:

答案 0 :(得分:0)

VBA对于长期存储变量很奇怪。根据一般经验,如果您能够在保存的变量和需要获取值之间与Excel工作簿进行交互,则不能指望仍保持其值的变量。

解决此问题的最安全方法是将您的值存储在一个隐藏工作表的单元格中,并在需要时从那里读取。

答案 1 :(得分:0)

已经足够

解决方案1 ​​

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

“正常”模块。

解决方案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

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中。

解决方案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。