2016-12-06 31 views
0

現在3枚のシートを使用しています。最初のものはすべてのリストとデータを含んでいます。入力と呼ばれる2番目のものでは、リスト内の異なる変数の中から選択できます。 入力シートで選択した内容に応じて、出力シートに内容が表示されます。行を表示/非表示

たとえば、「入力シート」にリストがあります。ここでは、基礎となる番号を選択できます。 例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 
+0

こんにちは。私が指摘しておくべき最初のことは、 'Else'と、 'If'(End Ifステートメントを追加する無数の無数のもの)ではなく、異なる条件に 'ElseIf'を使用することです。第2に、別の条件の間で移動するときに表示されない理由は、各ステップですべての行を非表示にしていないことです(つまり、前の設定の行は別の設定あなたの例では13)がトリガーされます。 –

+0

要約すると、If文の構造を再編成する必要があると思います。この有用なリンクを見てください:) https://www.techonthenet.com/excel/formulas/if_then.php –

+2

@excelnewbieいいえ、いいえ、いいえ、あなたのケースでは非常に多くの 'If'を使用しないでください。' Select Case Target.Value'、 'Case" 1 "、' Case "2" 'など... –

答えて

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

このコードを使用して自分のリストを参照するにはどうすればよいですか? – excelnewbie

+0

私は20の数字を持つリストを持っていて、それぞれの番号で異なる行が隠されているはずです – excelnewbie

+0

私はあなたの助けを私の問題を解決するために使用しようとしましたが、今は何も隠されていません。私はこの1つを使用しました: – 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& 'Rows(" 65:84 ")'でなければなりません。 –

+0

良い点、私は怠惰で、ちょうどコピー/ペーストしました – Rdster

+0

それはちょうど最初の3つのもののために働きます – excelnewbie

関連する問題