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

Dzień dobry,

mam problem ze stworzeniem makra, a w zasadzie pętli, która będzie wypełniać zakres pustych komórek kolorem, zależnie od zmiennej ilości danych w kolumnie obok.
np. Kolumna A jest pusta i chcę żeby w niej pojawiał się kolor w zależności od ilości wypełnionych komórek w kolumnie B.
W kolumnie B zawsze są inne ilości komórek, więc kolorowanie zakresu niestety nie wchodzi w grę.
Czy byłaby możliwość naprowadzenia na takie rozwiązanie?
Z góry dziękuję za odpowiedź

Jakub_Gajewski_kpli
  • Zapytał
  • @ Jakub_Gajewski_kpli | 04.09.2020
    • 0
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 1

Najczęściej do wykrycia ostatniej niepustej komórki stosuje się odpowiednik zaznaczenia ostatniej komórki w danej kolumnie (np. B1048576) i naciśnięcia klawiszy ctrl+strzałka w górę:

Sub koloruj()
Dim r As Long

'w klauzuli With wskazuję, na którym arkuszu chcę wykonać kolorowanie
With ThisWorkbook.Worksheets("Arkusz1")
   'znajduję ostatni niepusty wiersz w kolumnie B
   r = .Cells(.Rows.Count, 2).End(xlUp).Row
   'upewniam się, że w kolumnie B były jakieś dane poza nagłówkiem (r > 1)
   'i  koloruję kolumnę A w tym zakresie
   If r > 1 Then .Range("A1:A" & r).Interior.Color = vbRed
End With

End Sub

Oczywiście można zrobić odwrotnie: ustawić się w B1 i nacisnąć klawisze ctrl+strzałka w dół, ale ten sposób ma tę wadę, że będzie działał nieprawidłowo w przypadku luk w danych w kolumnie B:

Sub koloruj2()
Dim r As Long

With ThisWorkbook.Worksheets("Arkusz1")
   r = .Range("B1").End(xlDown).Row
   If r < .Rows.Count Then .Range("A1:A" & r).Interior.Color = vbRed
End With

End Sub

PS: Zakładam, że nie mamy tu do czynienia z ekstremalnym przypadkiem wypełnienia wszystkich komórek w kolumnie B, bo wtedy obie metody zawiodą :)

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 07.09.2020
    • 1
    • 7
    • 1
Komentarze
Dziękuję! właśnie o coś takiego mi chodziło :)
Skomentował : @ Jakub_Gajewski_kpli ,07.09.2020
  • 0
  • 0
  • 0