Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 选中复选框Userform_Excel_Vba_Checkbox_Userform - Fatal编程技术网

Excel 选中复选框Userform

Excel 选中复选框Userform,excel,vba,checkbox,userform,Excel,Vba,Checkbox,Userform,目前,我已经创建了一个带有三个复选框的用户表单。这些复选框激活我创建的模块。当我选中用户表单中的复选框时,我希望该框保持选中或取消选中状态。有什么想法吗?在尝试调用模块之前,请确保没有“卸载我”或“卸载用户表单”。这将把userform重置为默认值 您还可以更改每个复选框的默认值(选中/未选中)。构建用户表单时,单击复选框,然后在属性窗口中,选择是否要将其设置为true或false作为默认值 在尝试调用模块之前,请确保没有“卸载我”或“卸载用户表单”。这将把userform重置为默认值 您还可以

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

在尝试调用模块之前,请确保没有“卸载我”或“卸载用户表单”。这将把userform重置为默认值


您还可以更改每个复选框的默认值(选中/未选中)。构建用户表单时,单击复选框,然后在属性窗口中,选择是否要将其设置为true或false作为默认值

在尝试调用模块之前,请确保没有“卸载我”或“卸载用户表单”。这将把userform重置为默认值


您还可以更改每个复选框的默认值(选中/未选中)。构建用户表单时,单击复选框,然后在属性窗口中,选择是否要将其设置为true或false作为默认值

只要电子表格保持打开状态,
Me.Hide
而不是
Unload Me
将起作用,但一旦关闭,电子表格将无法再记住设置

如果希望电子表格记住设置,即使它已关闭,也需要在某处捕获选择设置

假设我们创建了一个名为“chkboxVal”的工作表。然后,我们可以通过
Ok\u单击
event/procedure将数据存储在那里,然后通过
UserForm\u 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

只要电子表格保持打开状态,
Me.Hide
而不是
Unload Me
将起作用,但一旦关闭,电子表格将无法再记住设置

如果希望电子表格记住设置,即使它已关闭,也需要在某处捕获选择设置

假设我们创建了一个名为“chkboxVal”的工作表。然后,我们可以通过
Ok\u单击
event/procedure将数据存储在那里,然后通过
UserForm\u 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

当您选中复选框时,复选框是否不保持选中状态?是否正在卸载表单或其他内容?默认情况下,复选框保持选中状态。。。我们遗漏了什么?当您选中复选框时,复选框是否不保持选中状态?您是否正在卸载表单或其他内容?默认情况下,复选框保持选中状态。。。我们错过了什么?嗯。可能是对的,也可能是错的。谁也说不出来。这个问题目前还不能回答——为什么还要麻烦呢?这个会在哪里?嗯。可能是对的,也可能是错的。谁也说不出来。这个问题目前还不能回答——为什么还要麻烦呢?这个问题在哪里?