2016-12-06 259 views
0

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

例如,我在“输入”工作表中有一个列表,您可以选择底层的编号。 当选择例子2时,一切正常,并在表格“输出”中隐藏行。 从2切换到例如13它不再工作,它仍然显示编号2的内容。

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

我用下面的代码工作:使用Select Case

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 
+0

嗨。首先我要指出的是在不同的条件下使用'ElseIf',而不是'Else',然后'If'(还有无数的End If语句需要输入)。其次,我认为它在不同条件下移动时不会显示的原因是您没有在每一步中隐藏所有行,所以当设置之前(即您的示例中为2)的行将仍然隐藏时,在你的例子中为13)被触发。 – 2016-12-06 12:37:07

+0

总之,我认为你需要重新组织你的If语句结构。看到这个有用的链接:) https://www.techonthenet.com/excel/formulas/if_then.php – 2016-12-06 12:38:04

+2

@excelnewbie不,不,不要在你的情况下使用这么多'如果',使用'Select Case Target.Value',然后'Case“1”','Case“2”'等等...... –

回答

0

代码的短样品。如果此代码位于“输出”工作表内的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 
+0

如何使用此代码来引用我的列表? – excelnewbie

+0

我有一个包含20个数字的列表,每个数字应该隐藏不同的行 – excelnewbie

+0

嗯,我试图用你的帮助来解决我的问题,但现在什么都不隐藏。我使用了这个: – excelnewbie

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 

基于其他意见....这将重置每次隐藏的行,然后隐藏如所须。

+0

不错的逻辑,但是你的'Else'部分出错了,删除了'Target&'部分,它应该是'行(“65:84”)'。 –

+0

好点,我很懒,只是复制/粘贴 – Rdster

+0

它只适用于前3个 – excelnewbie