使用表单复选框取消隐藏/隐藏excel中的行
我在excel中创建了一个表单,其中隐藏了[10:48]行,我希望在单击复选框时取消隐藏[10:48]行。我为复选框指定了一个宏,并使用以下公式:使用表单复选框取消隐藏/隐藏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 当我单击复选框时,什么也不会发生,但是当我
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
)上的工作表名称更新为实际工作表名称,然后按原样运行代码。