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

时间:2012-09-12 00:11:27

标签: excel vba checkbox userform

我创建了一个包含两个复选框的用户表单。我希望能够根据每个方框是选中还是取消选中来执行不同的操作。然而,似乎无论我做什么,它总是告诉我复选框的原始值(假和假)。这是附加到单击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

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

1 个答案:

答案 0 :(得分:1)

尝试使用此方法加载并显示表单(这在普通模块中):

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

我已将两个复选框初始化为Initialize事件中的特定值。这意味着我们确定表单将从

开始的状态