隐藏/取消隐藏行

时间:2016-12-06 12:31:42

标签: excel excel-vba hide rows vba

我目前正在使用三张纸。第一个包括所有列表和数据。在名为Input的第二个中,您可以在列表中选择不同的变量。 根据您在输入表中选择的内容,在输出表中显示内容。

例如,我在"输入"中有一个列表。在表格中您可以选择底层证券的编号。 当选择例如2时,一切都运行良好,并在表格中输出"行被隐藏。 从2切换到例如13它将不再起作用,它仍然显示数字2的内容。

你知道我的错误在哪里吗?

我正在使用以下代码:

If Target.Address = "$F$8" Then 'Underlying numbers
If Target.Value = "1" Then
Sheets("Output").Rows("66:84").Hidden = True
Sheets("Output").Rows("183:201").Hidden = True
Sheets("Output").Rows("226:244").Hidden = True
Else
If Target.Value = "2" Then
Sheets("Output").Rows("67:84").Hidden = True
Sheets("Output").Rows("184:201").Hidden = True
Sheets("Output").Rows("227:244").Hidden = True
Else
If Target.Value = "3" Then
Sheets("Output").Rows("68:84").Hidden = True
Sheets("Output").Rows("185:201").Hidden = True
Sheets("Output").Rows("228:244").Hidden = True
Else
If Target.Value = "4" Then
Sheets("Output").Rows("69:84").Hidden = True
Sheets("Output").Rows("186:201").Hidden = True
Sheets("Output").Rows("229:244").Hidden = True
Else
If Target.Value = "5" Then
Sheets("Output").Rows("70:84").Hidden = True
Sheets("Output").Rows("187:201").Hidden = True
Sheets("Output").Rows("230:244").Hidden = True
Else
If Target.Value = "6" Then
Sheets("Output").Rows("71:84").Hidden = True
Sheets("Output").Rows("188:201").Hidden = True
Sheets("Output").Rows("231:244").Hidden = True
Else
If Target.Value = "7" Then
Sheets("Output").Rows("72:84").Hidden = True
Sheets("Output").Rows("189:201").Hidden = True
Sheets("Output").Rows("232:244").Hidden = True
Else
If Target.Value = "8" Then
Sheets("Output").Rows("73:84").Hidden = True
Sheets("Output").Rows("190:201").Hidden = True
Sheets("Output").Rows("233:244").Hidden = True
Else
If Target.Value = "9" Then
Sheets("Output").Rows("74:84").Hidden = True
Sheets("Output").Rows("191:201").Hidden = True
Sheets("Output").Rows("234:244").Hidden = True
Else
If Target.Value = "10" Then
Sheets("Output").Rows("75:84").Hidden = True
Sheets("Output").Rows("192:201").Hidden = True
Sheets("Output").Rows("235:244").Hidden = True
Else
If Target.Value = "11" Then
Sheets("Output").Rows("76:84").Hidden = True
Sheets("Output").Rows("193:201").Hidden = True
Sheets("Output").Rows("236:244").Hidden = True
Else
If Target.Value = "12" Then
Sheets("Output").Rows("77:84").Hidden = True
Sheets("Output").Rows("194:201").Hidden = True
Sheets("Output").Rows("237:244").Hidden = True
Else
If Target.Value = "13" Then
Sheets("Output").Rows("78:84").Hidden = True
Sheets("Output").Rows("195:201").Hidden = True
Sheets("Output").Rows("238:244").Hidden = True
Else
If Target.Value = "14" Then
Sheets("Output").Rows("79:84").Hidden = True
Sheets("Output").Rows("196:201").Hidden = True
Sheets("Output").Rows("239:244").Hidden = True
Else
If Target.Value = "15" Then
Sheets("Output").Rows("80:84").Hidden = True
Sheets("Output").Rows("197:201").Hidden = True
Sheets("Output").Rows("240:244").Hidden = True
Else
If Target.Value = "16" Then
Sheets("Output").Rows("81:84").Hidden = True
Sheets("Output").Rows("198:201").Hidden = True
Sheets("Output").Rows("241:244").Hidden = True
Else
If Target.Value = "17" Then
Sheets("Output").Rows("82:84").Hidden = True
Sheets("Output").Rows("199:201").Hidden = True
Sheets("Output").Rows("242:244").Hidden = True
Else
If Target.Value = "18" Then
Sheets("Output").Rows("83:84").Hidden = True
Sheets("Output").Rows("200:201").Hidden = True
Sheets("Output").Rows("243:244").Hidden = True
Else
If Target.Value = "19" Then
Sheets("Output").Rows("84").Hidden = True
Sheets("Output").Rows("201").Hidden = True
Sheets("Output").Rows("244").Hidden = True
Else
Sheets("Output").Rows("66:84").Hidden = False
Sheets("Output").Rows("183:201").Hidden = False
Sheets("Output").Rows("226:244").Hidden = False
Sheets("Output").Rows("67:84").Hidden = False
Sheets("Output").Rows("184:201").Hidden = False
Sheets("Output").Rows("227:244").Hidden = False
Sheets("Output").Rows("68:84").Hidden = False
Sheets("Output").Rows("185:201").Hidden = False
Sheets("Output").Rows("228:244").Hidden = False
Sheets("Output").Rows("69:84").Hidden = False
Sheets("Output").Rows("186:201").Hidden = False
Sheets("Output").Rows("229:244").Hidden = False
Sheets("Output").Rows("70:84").Hidden = False
Sheets("Output").Rows("187:201").Hidden = False
Sheets("Output").Rows("230:244").Hidden = False
Sheets("Output").Rows("71:84").Hidden = False
Sheets("Output").Rows("188:201").Hidden = False    
Sheets("Output").Rows("231:244").Hidden = False
Sheets("Output").Rows("72:84").Hidden = False
Sheets("Output").Rows("189:201").Hidden = False
Sheets("Output").Rows("232:244").Hidden = False
Sheets("Output").Rows("73:84").Hidden = False
Sheets("Output").Rows("190:201").Hidden = False
Sheets("Output").Rows("233:244").Hidden = False
Sheets("Output").Rows("74:84").Hidden = False
Sheets("Output").Rows("191:201").Hidden = False
Sheets("Output").Rows("234:244").Hidden = False
Sheets("Output").Rows("75:84").Hidden = False
Sheets("Output").Rows("192:201").Hidden = False
Sheets("Output").Rows("235:244").Hidden = False
Sheets("Output").Rows("76:84").Hidden = False
Sheets("Output").Rows("193:201").Hidden = False
Sheets("Output").Rows("236:244").Hidden = False
Sheets("Output").Rows("77:84").Hidden = False
Sheets("Output").Rows("194:201").Hidden = False
Sheets("Output").Rows("237:244").Hidden = False
Sheets("Output").Rows("78:84").Hidden = False
Sheets("Output").Rows("195:201").Hidden = False
Sheets("Output").Rows("238:244").Hidden = False
Sheets("Output").Rows("79:84").Hidden = False
Sheets("Output").Rows("196:201").Hidden = False
Sheets("Output").Rows("239:244").Hidden = False
Sheets("Output").Rows("80:84").Hidden = False
Sheets("Output").Rows("197:201").Hidden = False
Sheets("Output").Rows("240:244").Hidden = False
Sheets("Output").Rows("81:84").Hidden = False
Sheets("Output").Rows("198:201").Hidden = False
Sheets("Output").Rows("241:244").Hidden = False
Sheets("Output").Rows("82:84").Hidden = False
Sheets("Output").Rows("199:201").Hidden = False
Sheets("Output").Rows("242:244").Hidden = False
Sheets("Output").Rows("83:84").Hidden = False
Sheets("Output").Rows("200:201").Hidden = False
Sheets("Output").Rows("243:244").Hidden = False
Sheets("Output").Rows("84").Hidden = False
Sheets("Output").Rows("201").Hidden = False
Sheets("Output").Rows("244").Hidden = False
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

2 个答案:

答案 0 :(得分:0)

使用Select Case简短的代码示例。如果此代码位于Worksheet_Change内部"输出"表格,然后您不需要使用With Sheets("Output")行。

With Sheets("Output")

    ' ****** Edit 1 ******
    ' first thing" unhide all hidden rows from previous code run
    .Rows("66:84").Hidden = False
    .Rows("183:201").Hidden = False
    .Rows("226:244").Hidden = False

    Select Case Target.Value
        Case "1"
            .Rows("66:84").Hidden = True
            .Rows("183:201").Hidden = True
            .Rows("226:244").Hidden = True

        Case "2"
            .Rows("67:84").Hidden = True
            .Rows("184:201").Hidden = True
            .Rows("227:244").Hidden = True

        ' rest of your cases 3 thourgh 19.....

        Case Else
            .Rows("66:84").Hidden = False
            .Rows("183:201").Hidden = False
            .Rows("226:244").Hidden = False
            ' the rest of your line here are redundant >> can be removed

    End Select

End With

答案 1 :(得分:0)

或者,因为看起来这实际上就是你在做什么......

If Target.Address = "$F$8" Then 'Underlying numbers
  Sheets("Output").Rows("66:84").Hidden = False
  Sheets("Output").Rows("183:201").Hidden = False
  Sheets("Output").Rows("226:244").Hidden = False
  If Target >= 1 And Target <= 19 Then
    Sheets("Output").Rows(65 + Target & ":84").Hidden = True
    Sheets("Output").Rows(182 + Target & ":201").Hidden = True
    Sheets("Output").Rows(225 + Target & ":244").Hidden = True
  End If
End If

基于其他评论....这将每次重置隐藏的行,然后根据需要隐藏。