VBA使用其他工作表上的下拉列表自动隐藏行

时间:2017-11-01 17:17:03

标签: vba excel-vba excel

下午全部!

我正在使用各种下拉列表的结果隐藏电子表格中的相关行,因为下拉列表中的值已更改(因此会自动更改)。

通过一些谷歌搜索,我遇到了下面的设置很好用,虽然我在尝试从另一个工作表中指定下拉列表单元格时遇到了麻烦。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim disabled As Boolean
    If Range("D2") = "Yes" Then
        disabled = True
    End If

    If disabled Then
        Rows("3:8").EntireRow.Hidden = False
    Else        
        Rows("3:8").EntireRow.Hidden = True
    End If

End sub

使用以下功能并没有奏效,谷歌搜索解决方案让我陷入了许多死胡同:

If Sheets("Topsheet").Range("D27") = "Yes" Then

在声明变量时我是否无法使用相邻工作表中的值,因为它是私有子?

任何帮助都会非常感激,因为我被困了几个小时!

1 个答案:

答案 0 :(得分:0)

您的代码可以大规模简化。尝试使用此功能(如果表单名称与您的名称不一致,您必须更新表单名称)

Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("SheetWithRowsToBeHidden").Rows("3:8").EntireRow.Hidden = IIf(Me.Range("D27").Value2 = "Yes", True, False)
End Sub

另外,你在哪里放这个代码?您是将它放在模块中还是在Sheet对象中?它需要位于具有下拉列表的Sheet对象中。