读取用户窗体对象值

我创build了一个用户窗体(在VBA Projectbrowser中手动)。 我已经编写了VBA代码,它在运行时用不同的对象( LabelsOptionbuttons等)填充这个用户窗体。 到目前为止一切正常

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

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

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

方法1

将您的选项button对象声明为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

声明一个Booleanvariables并创build“选项”button的单击事件,然后在该单击事件中设置Booleanvariables的值。 要在运行时创build选项button的单击事件,请参阅本示例

然后,您可以检查Sub Fill()Booleanvariables的值并相应地执行。