【问题标题】:VBA code to hide/unhide multiple rows in another worksheet based on cell output from another worksheetVBA代码根据另一个工作表的单元格输出隐藏/取消隐藏另一个工作表中的多行
【发布时间】:2018-02-09 21:00:34
【问题描述】:

我想对以下内容使用 VBA 代码:基于单元格输出(单元格 W20 中的“TRUE”或“FALSE”,根据用户是否选中复选框而变化),我希望行是根据下面的代码在另一个名为“分析”工作表的工作表上隐藏/取消隐藏。我右键单击单元格 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

【问题讨论】:

    标签: excel vba


    【解决方案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 的名称是表单控件的名称(复选框),后跟下划线,然后“单击”。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2019-02-22
      相关资源
      最近更新 更多