保持复选框已选中用户表单

时间:2017-07-12 15:02:21

标签: excel vba checkbox userform

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

2 个答案:

答案 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作为默认值。