Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Dzień dobry, 

prosiłabym o pomoc z makrem:

W komórce D8 mam listę z trzema wartościami A,B,C. Na podstawie wybranej wartości arkusz excela ma ukrywać/ odkrywać wiersze. Nie mam porblemu z ukrywniem, natomiast jak już wiersze się ukryją i zmienię wartość komórki D8 to ukryte wiersze się nie odkrywają. Kod wygląda następująco:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$8" Then
If Target.Value = "A" Then Rows("9:31").EntireRow.Hidden = True
Rows("32:57").EntireRow.Hidden = False
If Target.Value = "B" Then Rows("9:30").EntireRow.Hidden = False
Rows("31:57").EntireRow.Hidden = True
If Target.Value = "C" Then Rows("9:57").EntireRow.Hidden = False
End If
End Sub

 

Opcja C i B działają natomiast w przypadku opcji A wiersze 9:57 są ukryte.

 

Będę bardzo wdzięczna za pomoc! 

 

 

Kamila_Cymanowska
  • Zapytał
  • @ Kamila_Cymanowska | 08.02.2021
    • 1
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

Po wybraniu A Twoje makro:

  1. warunkowo ukrywa wiersze 9:31
  2. odkrywa 32:57
  3. omija warunek dla B
  4. ukrywa 31:57
  5. omija warunek dla C

...czyli łącznie zakres 9:57 zostaje ukryty. Przejdź poniższy kod krok po kroku (Debug -> Step Into lub F8) i przyjrzyj się kolejnym jego działaniom.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$8" Then
   'jeżeli wpisane jest A, ukrywasz wiersze 9:31
   If Target.Value = "A" Then Rows("9:31").EntireRow.Hidden = True
   'bezwarunkowo odkrywasz wiersze 32:57
   Rows("32:57").EntireRow.Hidden = False
   'jeżeli wpisane jest B, odkrywasz wiersze 9:30
   If Target.Value = "B" Then Rows("9:30").EntireRow.Hidden = False
   'bezwarunkowo ukrywasz wiersze 31:57
   Rows("31:57").EntireRow.Hidden = True
   'jeżeli wpisane jest C, odkrywasz wiersze 9:57
   If Target.Value = "C" Then Rows("9:57").EntireRow.Hidden = False
End If

End Sub
Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 10.02.2021
    • 1
    • 7
    • 1