2017-01-27 4 views
0

シート1の行34:53(「プログレッション」と呼ばれる)シート2(「マップ」と呼ばれる)範囲( "A8")シート1のセル値に基づいてシート1とシート2の行を非表示にする

セルA8は、オーストラリアの都市を表示するドロップダウンメニューです。行を隠す必要がある場合(例:「メルボルン」には非表示の行が必要、「メルボルン」には表示行が必要です)、都市名の後ろに空白スペースが入力されます。私は現在、各場所を通過するコードを持っていますが、これはちょっと迷惑なものです...「A8に「*」があり、行34:53をシート上に隠す(「進行」)行34:53シート( "マップ") "

私の現在のコードは以下の通りです(シート(" Progression ")にあります)。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address(False, False) = "A8" Then 
    Select Case Target.Value 
     Case "Queensland": Rows("34:53").Hidden = False 
     Case "Queensland ": Rows("34:53").Hidden = True 
     Case "Melbourne": Rows("34:53").Hidden = False 
     Case "Melbourne ": Rows("34:53").Hidden = True 
     Case "Ballarat": Rows("34:53").Hidden = False 
     Case "Ballarat ": Rows("34:53").Hidden = True 
     Case "Brisbane": Rows("34:53").Hidden = False 
     Case "Brisbane ": Rows("34:53").Hidden = True 
     Case "Canberra": Rows("34:53").Hidden = False 
     Case "Canberra ": Rows("34:53").Hidden = True 
     Case "North Sydney": Rows("34:53").Hidden = False 
     Case "North Sydney ": Rows("34:53").Hidden = True 
     Case "Strathfield": Rows("34:53").Hidden = False 
     Case "Strathfield ": Rows("34:53").Hidden = True 
    End Select 
End If 

End Sub 

任意の助けいただければ幸い:)

答えて

0

たぶん、このように:

行を隠すのではなく、変数を設定するselect文で。

次に、別のステートメントを使用して変数の行の可視性を設定し、他のシートの行の可視性を設定します。あなたが好きな行くことができる

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim trigger As Boolean 
    If Target.Address(False, False) = "A8" Then 
    Select Case Target.Value 
     Case "Queensland": trigger = False 
     Case "Queensland ": trigger = True 
     Case "Melbourne": trigger = False 
     Case "Melbourne ": trigger = True 
     Case "Ballarat": trigger = False 
     Case "Ballarat ": trigger = True 
     Case "Brisbane": trigger = False 
     Case "Brisbane ": trigger = True 
     Case "Canberra": trigger = False 
     Case "Canberra ": trigger = True 
     Case "North Sydney": trigger = False 
     Case "North Sydney ": trigger = True 
     Case "Strathfield": trigger = False 
     Case "Strathfield ": trigger = True 
    End Select 
End If 

ThisWorkbook.Worksheets("Progression").Rows("34:53").Hidden = trigger 
ThisWorkbook.Worksheets("Map").Rows("34:53").Hidden = trigger 

End Sub 
+0

絶対伝説!私は十分にあなたに感謝することはできません:D – Kabloogey

+1

それはあなたの問題を解決した場合は、[ツアー]に記載されているように答えとしてマークしてください。 – teylyn

+0

最後の文字が '' '' 'であるかどうかを確認するだけではどうですか? – nightcrawler23

2

あなたが選択した値の最後の文字がスペースを持っている場合は、行を非表示にする必要があるので、以下のコードは

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim trigger As Boolean 
    If Target.Address(False, False) = "A8" Then 
     trigger = False 
     If Right(Target.Value, 1) = " " Then 
      trigger = True 
     End If 
    End If 

    ThisWorkbook.Worksheets("Progression").Rows("34:53").Hidden = trigger 
    ThisWorkbook.Worksheets("Map").Rows("34:53").Hidden = trigger 

End Sub 
0

を動作するはずですが、以下:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$A$8" Then 
     Rows("34:53").Hidden = Right(Target.Value, 1) = " " ' <--| "Progression" is your active sheet 
     Worksheets("Map").Rows("34:53").Hidden = Right(Target.Value, 1) = " " 
    End If 
End Sub 
関連する問題