读取Userform对象值

时间:2013-11-10 08:44:15

标签: excel vba excel-vba userform

我创建了一个Userform(在VBA Projectbrowser中手动创建)。我编写了VBA代码,它在运行时使用不同的对象填充此Userform(LabelsOptionbuttons等)。到目前为止一切正常

Userform填充了从Excel工作表中读取并正确显示的数据。但是我无法读取其上对象的输入(例如Optionbutton - TRUE or FALSE)。这些对象不会出现在任何地方(在用户窗体上除外),以便我可以链接它们并在另一个模块中使用它们。

我猜它们只是显示而没有真正读入内存或其他任何内容(初始化!?)。

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决这个问题。

方式1

将您的选项按钮对象声明为Public。

模块代码

Public theOpBut As Object

Sub Fill()
    If theOpBut.Value = True Then
        ActiveSheet.Cells(1, 5) = 1
    Else
        ActiveSheet.Cells(1, 5) = "NO"
    End If
End Sub

用户形式代码

Private Sub UserForm_Initialize()
    Set theOpBut = UserForm1.Controls.Add("Forms.optionbutton.1", "OptionButton", True)
        With theOpBut
        .Caption = "Test Button"
        '.GroupName = OpButGroupCounter
        .Top = 10
        .Left = 20
        .Height = 16
        .Width = 50
        .Font.Size = 12
        .Font.Name = "Ariel"
    End With
End Sub

Private Sub CommandButton1_Click()
    Call Fill
End Sub

第2天

声明Boolean变量并创建Option按钮的click事件,然后在该click事件中设置Boolean变量的值。要在“运行时”创建“选项”按钮的单击事件,请参阅THIS EXAMPLE

然后,您可以检查BooleanSub Fill()变量的值,并采取相应的行动。