3

我创建了一个包含两个复选框的用户表单。我希望能够根据每个框是选中还是未选中来做不同的事情。但是,似乎无论我做什么,它总是会告诉我复选框的原始值(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

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

4

1 回答 1

2

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

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事件中的特定值。这意味着我们可以确定表单开始的状态

于 2012-09-12T00:52:12.470 回答