VBA从userform获取变量值

时间:2017-07-21 11:15:31

标签: vba

我试图从我的模块中的userform获取Teller的值。这是我的用户表单代码:

Private Sub UserForm_Initialize()

Dim LastRow As Long
Dim i As Long
Dim Teller As Long
Dim chkBox As MSForms.CheckBox

Teller = 1
LastRow = Worksheets("Sheet").Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To LastRow
    If Worksheets("Sheet").Cells(i, 1).Value = Worksheets("Sheet").Range("S1").Value Then
        Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & Teller)
        chkBox.Caption = Worksheets("Sheet").Cells(i, 9).Value
        chkBox.Left = 5
        chkBox.Top = 25 + ((Teller - 1) * 20)
        Teller = Teller + 1
    End If
Next i    
End Sub

我的模块代码:

Dim p As Long
Dim x As String
With UserForm
    .Show
    For p = 1 To .Teller
        x= .Controls("CheckBox_" & p).Caption
        MsgBox (x)
    Next p
    End
End With

UserForm.Teller不会给我Teller的价值。我怎么得到这个?

1 个答案:

答案 0 :(得分:2)

Teller不是userform的对象或方法,它是您在userform_initialize模块中定义的变量。

您可以做的是将变量声明为模块中的公共变量,然后在您的用户表单中调用它。您可以通过将模块中子例程上方的变量声明为公共,如下所示。

Public Teller As Long

然后你就可以使用

For p = 1 to teller

在你的模块中

如果要在每次运行时重置用户窗体,则需要在代码末尾手动将变量重置为0 /

由于