2016-03-23 30 views
1

Excel VBA'da gerekli hücreleri gizlemek için aşağıdaki kodu kullanıyorum.VBA'yı kullanarak hücreleri gizleme

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 

Değerleri azalan sıraya koyduğumda (4, 3, 2, 1 gibi) mükemmel çalışır. Ama 1'i koyduğumda, 2 veya 3'e geçmeyi planlıyorsam (fakat 4 değil). Daha sonra ikinci ve üçüncü panel grubundaki hücreleri göstermez. Ama eğer 4 koyarsam, o zaman tekrar tüm panel gruplarını gösterir. Ekran görüntülerini aşağıda ekledim.

enter image description here

sıfırdan Range ("$ F $ 26") 'de yeni değerlerle sonraki aramaları yeniden değerlendirmek lazım

enter image description here

cevap

1

enter image description here

; Örneğin. Her şeyi görünür yap ve sonra neyin gizlendiğine karar ver.

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 

Ben Select Case statement için durum değerlendirmesi değişti ve unnnecessary olarak Cell değişken kaldırdık.

Aralık ("F26") boşken herhangi bir beklenmedik durum bulamadım. Şu anda, bu < 2 koşulu altında.