简体   繁体   English

如何使用VBA从Excel用户窗体中读取复选框的值

[英]How to use VBA to read the values of a checkbox from an Excel userform

I have created a userform that contains two checkboxes. 我创建了一个包含两个复选框的用户窗体。 I would like to be able to do different things depending on whether each box is checked or unchecked. 我希望能够根据是否选中每个框来做不同的事情。 However, it seems like no matter what I do, it will always tell me the original value of the checkboxes (false and false). 但是,无论我做什么,似乎总是会告诉我复选框的原始值(false和false)。 Here is the code attached to clicking CommandButton1: 这是单击CommandButton1附带的代码:

Private Sub CommandButton1_Click()

ReadData

End Sub

And here 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

No matter how the boxes are checked, the immediate window always shows this: 无论如何选中复选框,即时窗口始终显示以下内容:

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

I have a screenshot of the whole operation but it won't let me upload it because I'm a new user. 我有整个操作的屏幕截图,但是因为我是新用户,所以它不允许我上传它。

Try this method to load and show the form (this goes in a normal module): 尝试使用此方法加载并显示表单(这在普通模块中进行):

Sub main()

Dim myForm As ComplaintEntryForm

Set myForm = New ComplaintEntryForm
myForm.Show
Set myForm = Nothing

End Sub

In the UserForm's own module, add the following: 在用户窗体自己的模块中,添加以下内容:

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

I've initialized the two checkboxes to specific values in the Initialize event. 我已经将两个复选框InitializeInitialize事件中的特定值。 This means we are certain about the state the form will start in 这意味着我们可以确定表单开始的状态

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM