根据从下拉列表中选择的数字隐藏单元格

时间:2014-12-05 02:20:07

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

我的工作表中有两组数据 - 第一组是每台机器一行,第二组是每台机器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

谢谢

1 个答案:

答案 0 :(得分:0)

我正在提供更通用的解决方案。您需要在工作表模块中使用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