【问题标题】:Hide Cells based on number selected from Drop Down根据从下拉列表中选择的数字隐藏单元格
【发布时间】:2014-12-05 02:20:07
【问题描述】:

我的工作表中有两组数据 - 第一组是每台机器 1 行,第二组是每台机器 13 行。从下拉框中,用户将从 1、2、3、4、5、10、15、20、25、30 中选择与机器数量相对应的值。

选择一个值时,需要隐藏两个数据集中的相应行。例如,如果用户选择 5,则只会显示机器 1 到 5 的行。

到目前为止,我有以下代码,但想知道是否有一种简化的方法来执行此操作,因为我尚未添加单个值 (1-5),当值为从下拉列表中选择?

Sub HideRows()

If Range("F19") = "10" Then
    Rows("31:60").EntireRow.Hidden = False
    Rows("84:473").EntireRow.Hidden = False
    Rows("41:60").EntireRow.Hidden = True
    Rows("214:473").EntireRow.Hidden = True
ElseIf Range("F19") = "15" Then
    Rows("31:60").EntireRow.Hidden = False
    Rows("84:473").EntireRow.Hidden = False
    Rows("46:60").EntireRow.Hidden = True
    Rows("279:473").EntireRow.Hidden = True
ElseIf Range("f19") = "20" Then
    Rows("31:60").EntireRow.Hidden = False
    Rows("84:473").EntireRow.Hidden = False
    Rows("51:60").EntireRow.Hidden = True
    Rows("344:473").EntireRow.Hidden = True
ElseIf Range("f19") = "25" Then
    Rows("31:60").EntireRow.Hidden = False
    Rows("84:473").EntireRow.Hidden = False
    Rows("56:60").EntireRow.Hidden = True
    Rows("409:473").EntireRow.Hidden = True
ElseIf Range("f19") = "30" Then
    Rows("31:60").EntireRow.Hidden = False
    Rows("84:473").EntireRow.Hidden = False
End If
End Sub

谢谢

【问题讨论】:

    标签: vba drop-down-menu show-hide


    【解决方案1】:

    我提供了一个更通用的解决方案。您需要在工作表的模块中使用 WOrksheet_Change

    参考:http://msdn.microsoft.com/en-us/library/office/ff839775(v=office.15).aspx

    Private Sub Worksheet_Change(ByVal Target As Range)
    Debug.Print Target.Address
    
    If Target.Address = "$A$1" Then 'change the address to the dropdown box cell you have
        Debug.Print Target.Value
        NumMachineShow = CLng(Target.Value)
        Cells.EntireRow.Hidden = False ' reset, unhidden every row first
        Rows(31 + NumMachineShow & ":60").EntireRow.Hidden = True ' hide the unwanted 1 row per machine here
        Rows(61 + NumMachineShow * 13 & ":473").EntireRow.Hidden = True ' hide the detail, you need to modify the numbers yourself
    End If
    
    End Sub
    

    【讨论】:

    • 感谢您的代码。我将代码复制到工作簿的 module1 中,并更新了单元格引用和行,但是当我更改下拉框中的值时,它什么也没做?任何想法..
    • 你需要将代码复制到Sheet Module,而不是你自己的模块,Sheet Moudule的意思是“Sheet1(Sheet1)”
    • 谢谢 - 当我点击 30 时它似乎隐藏了第 30 行?唯一的另一件事是在每个范围的底部,我有一个总计列。在第 31:60 行的第一个范围内,当我从下拉列表中选择一个数字时,第 61 行和第 62 行的总计值当前也在隐藏总计 - 我怎样才能不隐藏它们?
    • 我不太了解您的情况,但我相信您可以通过操纵数字,或将隐藏范围拆分为 2、3、4 个以上的部分来达到您的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2011-10-23
    • 1970-01-01
    相关资源
    最近更新 更多