Excel VBA宏使用复选框隐藏行 - 如果还有其他语句

时间:2013-09-19 21:05:21

标签: excel if-statement checkbox case

我在一个工作表上有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

........等等

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

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"'

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