2016-03-23 10 views
1

次のコードを使用して、Excel VBAで必要なセルを非表示にしています。VBAを使用してセルを非表示

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim Cell As Range 
    Set Cell = Range("$F$26") 
    If Not Application.Intersect(Cell, Range(Target.Address)) Is Nothing Then 
     If Range("F26").Value < 2 Then 
      Rows("39:61").EntireRow.Hidden = True 
      ElseIf Range("F26").Value < 3 Then 
      Rows("47:61").EntireRow.Hidden = True 
      ElseIf Range("F26").Value < 4 Then 
      Rows("55:61").EntireRow.Hidden = True 
      Else: Rows("39:61").EntireRow.Hidden = False 
     End If 
    End If 
End Sub 

Iが降順(様4、3、2、1)の値を入れたときにそれは完全に動作します。しかし、1を入れた後、私が2または3に切り替えるつもりならば(ただし4ではなく)。その後、第2および第3のパネル群の細胞は示されない。しかし、4を置くと、すべてのパネルグループが再び表示されます。私は以下のスクリーンショットを添付しました。あなたは最初からレンジ( "$ F $ 26")で新しい値で再評価以降の呼び出しに持って

enter image description here

enter image description here

enter image description here

答えて

1

。例えばすべてを見えるようにしてから、何が隠されるかを決めます。

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Application.Intersect(Range("F26"), Range(Target.Address)) Is Nothing Then 
     Application.ScreenUpdating = False 
     Rows("39:61").EntireRow.Hidden = False 
     Select Case Range("F26").Value 
      Case Is < 2 
       Rows("39:61").EntireRow.Hidden = True 
      Case 2 
       Rows("47:61").EntireRow.Hidden = True 
      Case 3 
       Rows("55:61").EntireRow.Hidden = True 
     End Select 
     Application.ScreenUpdating = True 
    End If 
End Sub 

私はSelect Case statementにあなたの状態の評価を変更し、unnnecessaryとしてCell変数を削除しました。

Range( "F26")が空白の場合に対処できませんでした。現在、それは< 2の条件に該当します。

関連する問題