【问题标题】:Excel VBA Macros Using Checkboxes To Hide Rows - If Else StatementsExcel VBA 宏使用复选框隐藏行 - If Else 语句
【发布时间】:2013-09-25 03:23:38
【问题描述】:

我在一张工作表上有 60 个复选框。它们是表单控制复选框。它们都执行类似的功能,即隐藏行。当您单击复选框时,它会显示行 取消选中时,行被隐藏。我可以为此写一个简单的 if else 或 case 语句吗:

Sub CheckBox1_Click()

    If Range("B4").Value = True Then
        Rows("5:62").EntireRow.Hidden = False
    Else
        Rows("5:62").EntireRow.Hidden = True
    End If

End Sub

Sub CheckBox2_Click()

    If Range("B63").Value = True Then
        Rows("64:102").EntireRow.Hidden = False
    Else
        Rows("64:102").EntireRow.Hidden = True
    End If

End Sub

Sub CheckBox3_Click()

    If Range("B103").Value = True Then
        Rows("104:129").EntireRow.Hidden = False
    Else
        Rows("104:129").EntireRow.Hidden = True
    End If

End Sub

Sub CheckBox4_Click()

    If Range("B130").Value = True Then
        Rows("131:160").EntireRow.Hidden = False
    Else
        Rows("131:160").EntireRow.Hidden = True
    End If

End Sub

Sub CheckBox5_Click()

    If Range("B161").Value = True Then
        Rows("162:183").EntireRow.Hidden = False
    Else
        Rows("162:183").EntireRow.Hidden = True
    End If

End Sub

Sub CheckBox6_Click()

    If Range("B184").Value = True Then
        Rows("185:222").EntireRow.Hidden = False
    Else
        Rows("185:222").EntireRow.Hidden = True
    End If

End Sub

Sub CheckBox7_Click()

    If Range("B223").Value = True Then
        Rows("224:244").EntireRow.Hidden = False
    Else
        Rows("224:244").EntireRow.Hidden = True
    End If
End Sub

........等等等等

另外,如果我需要在其中添加更多行或删除行,我将如何编码?

我希望有一种格式,将来我可以用它来创建我自己的复选框,而不必单独手动修复和编辑它们

【问题讨论】:

  • 你准备好使用命名范围了吗?
  • 嗨,当然,如果它可以完成这项工作。我知道如何做一个命名范围并使用一个活动的 x 复选框来隐藏一组行。我有大约 60 个复选框,那我该怎么做呢?

标签: excel if-statement checkbox case


【解决方案1】:

你可以这样使用:

Sub CheckBox1_Click()
   HideRows "B63", "64:102"
End Sub


Sub HideRows(controllerRange, rowRange)
   Rows(rowRange).EntireRow.Hidden = Not Range(controllerRange).Value
End Sub

您也可以直接从复选框中调用 HideRows。

在 CheckBox1 分配宏中,您将输入以下内容:

'HideRows "B63","64:102"'

注意:必须如图所示输入单引号。

【讨论】:

  • 嗨,这将是所有 60 个复选框的一个宏吗?还是我必须再次复制相同的代码?
  • HideRows 是一个宏,但必须在每个点击操作中设置自定义范围。如果范围是名称并且您触发了更改事件,您可能可以避免这种情况,但我个人更喜欢@grantnz 解决方案。
  • 我想我明白了,所以我需要创建命名范围,然后我使用一个宏分配给所有不同的复选框,我将自定义范围放在哪里?
  • 我假设您已经在使用“单元格链接”(在“格式控制”的“控制”选项卡下)指定电子表格中使用当前复选框值更新的单元格(在 B63 上面的示例中) . 唯一要做的额外的事情是使用“分配宏”来指定这个链接单元格和复选框控制的行范围。也就是说,将'HideRows“B63”,“64:102”'分配为宏(包括所有引号)。
  • 这似乎为得到我想要的东西提供了很好的理由。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 2016-07-02
相关资源
最近更新 更多