Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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中的行_Excel_Vba_Checkbox - Fatal编程技术网

使用表单复选框取消隐藏/隐藏excel中的行

使用表单复选框取消隐藏/隐藏excel中的行,excel,vba,checkbox,Excel,Vba,Checkbox,我在excel中创建了一个表单,其中隐藏了[10:48]行,我希望在单击复选框时取消隐藏[10:48]行。我为复选框指定了一个宏,并使用以下公式: Private Sub CheckBox45_Click() If CheckBox45 = True Then [10:48].EntireRow.Hidden = False Else: [10:48].EntireRow.Hidden = True End If End Sub 当我单击复选框时,什么也不会发生,但是当我

我在excel中创建了一个表单,其中隐藏了[10:48]行,我希望在单击复选框时取消隐藏[10:48]行。我为复选框指定了一个宏,并使用以下公式:

Private Sub CheckBox45_Click()

  If CheckBox45 = True Then

  [10:48].EntireRow.Hidden = False

  Else: [10:48].EntireRow.Hidden = True

End If

End Sub
当我单击复选框时,什么也不会发生,但是当我取消隐藏行并单击复选框时,它会隐藏行。这让我觉得只有一个行动是有效的。有办法解决这个问题吗

提前谢谢你的帮助


不知道这是否重要,但表单复选框位于D列第6行

假设您正在隐藏/取消隐藏工作表1上的行,并且该复选框属于工作簿的工作表1,则:

Private Sub CheckBox30_Click()  
    If ThisWorkbook.Sheets(1).CheckBoxes("Check Box 30").Value = 1 Then
        ThisWorkbook.Sheets(1).Rows("10:48").Hidden = true 
    Else
        ThisWorkbook.Sheets(1).Rows("10:48").Hidden = false
    End If
End Sub

这是另一种方法

语句
ws.checkbox(“复选框30”)=1
将返回
TRUE
FALSE
,这将隐藏或取消隐藏目标行

Private Sub CheckBox30_Click()

    Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Range("A10:A48").EntireRow.Hidden = ws.CheckBoxes("Check Box 30") = 1

End Sub

我在工作表1中尝试过,但是现在它给了我一个错误,它无法运行宏“Portfolio.xlsm!No”。宏可能不可用(…)。我把这句话改为“公文包。表(1)。行(“10:48”)。隐藏=无价值”。我做错什么了吗?excel的所有内容都启用了宏,我还有其他宏可以运行。由于某些原因,这仍然不起作用。我相信到目前为止,这更多的是一个命名错误,而不是一个公式错误,所以我会给你所有的信息,我要看看是否有可能修复。Private Sub No_Click()Portfolio.Sheet(1).Rows(“10:48”).Hidden=Portfolio.Sheet(1).复选框(“No”).Value End Sub这就是我正在使用的。工作簿名为Portfolio,复选框文本表示“否”,是否有办法检查它是什么复选框编号并使用它?@Josh您需要获取复选框对象的名称。如果右键单击该复选框,您将在左上角的框中看到其名称(就在公式栏的左侧)。默认情况下,它的名称通常类似于“复选框1”。该名称就是在
…复选框(“复选框1”)…
中所做的,我在复选框30中找到了该名称,因此我更改了公式中的名称,但它仍然给我相同的错误。但是,其他宏仍在工作。有什么想法吗?@Josh我有一些拼写错误,我发现复选框实际上似乎并没有返回真/假值,而是1表示真,而-4146表示假。我的答案已经修改了嗨,谢谢你的帮助。使用这段代码,我得到了这一行所需对象的相同错误::Set ws=Portfolio.Sheets(“Sheet1”)。有什么想法吗?请将第二行(
Sheet1
)上的工作表名称更新为实际工作表名称,然后按原样运行代码。