2016-12-06 300 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