保持复选框选中用户表单

Keep Check box Checked Userform

目前,我已经创建了一个带有三个复选框的用户表单。这些复选框激活我创建的模块。当我选中用户表单中的框时,我希望该框保持选中或未选中状态。有什么想法吗?

确保在尝试调用模块之前没有 "Unload Me" 或 "Unload Userform#"。这会将用户表单重置为默认值。

您还可以更改每个复选框的默认值 (check/unchecked)。在构建用户表单时,单击复选框,然后在属性 window、select 中将其设置为默认值 true 或 false。

只要价差sheet 保持开放,Me.Hide 而不是 Unload Me 就可以了,但一旦关闭,价差sheet 就不会了能够再记住设置。

如果你想让传播sheet记住设置,即使它关闭了,也需要在某处捕获选择设置。

假设我们创建了一个名为 "chkboxVal" 的 sheet。然后我们可以通过 Ok_Click event/procedure 将数据存储在那里,并通过 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" sheet。如果是这样,只需在模块中添加这一行。

Sheets("chkboxVal").Visible = xlVeryHidden