VBA代码,用于根据另一个工作表的单元格输出隐藏/取消隐藏另一个工作表中的多个行

时间:2018-02-09 21:00:34

标签: excel vba

我想在以下方面使用VBA代码:基于单元格输出(" TRUE"或" FALSE"单元格W20,根据用户是否检查我是否希望在另一个名为" Analysis"的工作表上隐藏/取消隐藏行。基于以下代码的工作表。我右键点击了"摘要"单元格W20和复选框所在的选项卡 - >查看代码 - >写下面的代码,但它不起作用。我对VBA很新,请帮忙,非常感谢,提前谢谢

Sub Worksheet_Change(ByVal Target As Range)

Set Target = Range("$W$20")
If Target.Value = "FALSE" Then
    Sheets("Analysis").Rows("54:55").EntireRow.Hidden = True
Else
    Sheets("Analysis").Rows("54:55").EntireRow.Hidden = False
End If
If Target.Value = "FALSE" Then
    Sheets("Analysis").Rows("94:95").EntireRow.Hidden = True
Else
    Sheets("Analysis").Rows("94:95").EntireRow.Hidden = False
End If
If Target.Value = "FALSE" Then
    Sheets("Analysis").Rows("134:135").EntireRow.Hidden = True
Else
    Sheets("Analysis").Rows("134:135").EntireRow.Hidden = False
End If
End If
End Sub

1 个答案:

答案 0 :(得分:1)

Excel无法识别由表单控件操作引起的单元格值的修改。我认为这是因为Excel将表单控件链接到值并自行应用更改,因此不会将其视为电子表格中的用户更改。

为了使您的代码有效,您必须将代码作为表单控件的单击事件移动到模块中。单击开发人员选项卡,然后单击Visual Basic。打开Visual Basic后,您会在左侧窗格中注意到,您在VBA项目中有一个工作表列表,其中包含工作簿的名称,而您的宏当前位于其中一个工作簿中。找到后,删除宏的代码。然后,右键单击工作簿的名称,然后选择“插入”>模块...

在编码窗格中,插入此修改后的代码:

Sub NameOfYourFormControlCheckBox_Click()

Dim MyRange As Range
Set MyRange = Range("$W$20")

If MyRange = False Then
    Sheets("Analysis").Rows("54:55").EntireRow.Hidden = True
ElseIf MyRange = True Then
    Sheets("Analysis").Rows("54:55").EntireRow.Hidden = False
End If
End Sub

确保sub的名称是表单控件的名称(复选框),后跟下划线,然后“单击”。

希望这有帮助!