目前,我已经创建了一个包含三个复选框的用户表单。这些复选框激活我创建的模块。当我选中用户表单中的框时,我希望该框保持选中状态或未选中状态。有什么想法吗?
答案 0 :(得分:2)
只要电子表格保持打开状态,Me.Hide
代替Unload Me
即可,但一旦关闭,电子表格将无法再记住这些设置。
如果您希望电子表格记住这些设置,即使它已关闭,也需要在某处捕获选择设置。
假设我们创建了一个名为“chkboxVal”的工作表。然后,我们可以通过Ok_Click
事件/过程将数据存储在那里,并通过UserForm_Initialize()
部分获取数据。
代码如下所示:
Private Sub Ok_Click()
Dim ctrl As Control, i As Integer
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then
i = i + 1
Sheets("chkboxVal").Cells(i, 1) = ctrl.Value
End If
Next
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim ctrl As Control, i As Integer
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then
i = i + 1
ctrl.Value = Sheets("chkboxVal").Cells(i, 1)
End If
Next
End Sub
您可能还希望以用户无法取消隐藏的方式隐藏“chkboxVal”表。如果是这样,只需在模块中添加此行。
Sheets("chkboxVal").Visible = xlVeryHidden
答案 1 :(得分:0)
确保你没有#34;卸载我"或者"卸载Userform#"在你试图调用模块之前。这会将userform重置为默认值。
您还可以更改每个复选框的默认值(选中/取消选中)。构建用户窗体时,单击复选框,然后在属性窗口中,选择是将其设置为true还是false作为默认值。