VBA代码基于另一个工作表中的单元格输出,以隐藏/UNDED多个行中隐藏/UNDY多行



我想使用vba代码以进行以下:基于单元格输出(true''或false w20中的" true"或" false",该电池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无法识别由表单控件操纵引起的单元格值的修改。我认为这是因为Excel将表单控件链接到一个值并应用了更改本身,因此不考虑它的用户更改电子表格中的更改。

为了使您的代码工作,您必须将代码移至模块中,以作为单击表单控件的单击事件。单击开发人员选项卡,然后进行视觉基本。一旦开放视觉基本,您会在左窗格上注意到,您在一个带有工作簿名称的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

确保子的名称是您的表单控件的名称(复选框(,然后是下划线,然后"单击"。

希望这会有所帮助!

最新更新