sobota, 9 marca 2013

Ukrywanie wierszy w zależności od wartości komórki

Ukrywamy wiersze dla których pierwsza kolumna zawiera ciąg "Nie"



Sub HideRows()
  
  Dim lastRow
  lastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
  
  For i = 1 To lastRow
  
    If (StrComp(Cells(i, 1).Value, "Nie", vbTextCompare) = 0) Then
        Cells(i, 1).EntireRow.Hidden = True
    Else
        Cells(i, 1).EntireRow.Hidden = False
    End If
    
  Next i
  
End Sub

I gotowe - cześć wierszy została ukryta.



Ukrywanie innych kolumn

Jeśli chcielibyśmy wykonać to samo dla innej kolumny niż pierwsza wystarczy zmienić jej numer:

Sub HideRowsInCol()
  
  Dim lastRow
  lastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
  Dim v_column

  v_column = 3
  
  For i = 1 To lastRow -- pętla po wszystkich wierszach
  
    If (StrComp(Cells(i, v_column).Value, "Nie", vbTextCompare) = 0) Then -- tu modyfikujesz też warunek
        Cells(i, v_column).EntireRow.Hidden = True
    Else
        Cells(i, v_column).EntireRow.Hidden = False
    End If
    
  Next i
  
End Sub

6 komentarzy:

  1. Jak mi się to przydało :) Dzięki!!!

    OdpowiedzUsuń
  2. Jestem początkujący więc proszę o wyrozumiałość.
    Jak zmienić w powyższy przykładzie zakres przeszukiwania po innej kolumnie np "C"?

    OdpowiedzUsuń
    Odpowiedzi
    1. Dodałem na to makro: HideRowsInCol()

      Usuń
  3. witam
    a jak zmienic kod aby ukrywało wiersze (z wyrazem Nie) jak w 1. przykładzie ale np dla 3 różnych arkuszy w skoroszycie

    OdpowiedzUsuń