如何使用VBA从Excel用户窗体读取checkbox的值

我创build了一个包含两个checkbox的用户窗体。 我希望能够做不同的事情,取决于每个框是否被选中或取消选中。 但是,似乎不pipe我做什么,它总是会告诉我checkbox的原始值(false和false)。 这里是单击CommandButton1的附加代码:

Private Sub CommandButton1_Click() ReadData End Sub 

这里ReadData:

 Sub ReadData() Dim myForm As UserForm Set myForm = UserForms.Add("ComplaintEntryForm") Debug.Print (myForm!CheckBox1.Name) Debug.Print (myForm!CheckBox1.Value) Debug.Print (myForm!CheckBox2.Name) Debug.Print (myForm!CheckBox2.Value) End Sub 

无论如何选中框,直接窗口总是显示:

 VBA.UserForms.Add("ComplaintEntryForm").Show CheckBox1 False CheckBox2 False 

我有整个操作的截图,但不会让我上传,因为我是一个新用户。

试试这个方法来加载和显示表单(这是在一个正常的模块中):

 Sub main() Dim myForm As ComplaintEntryForm Set myForm = New ComplaintEntryForm myForm.Show Set myForm = Nothing End Sub 

在UserForm自己的模块中,添加以下内容:

 Private Sub CheckBox1_Change() readData End Sub Private Sub CheckBox2_Change() readData End Sub Private Sub UserForm_Initialize() Me.CheckBox1.Value = True Me.CheckBox2.Value = False End Sub Private Sub readData() Debug.Print Me.CheckBox1.Name Debug.Print Me.CheckBox1.Value Debug.Print Me.CheckBox2.Name Debug.Print Me.CheckBox2.Value End Sub 

我已经初始化两个checkbox到Initialize事件中的特定值。 这意味着我们确信这个表格将会开始