Excel i VBA - formatowanie warunkowe inaczej
Kiedyś już pisałem jak można formatować komórki w excelu za pomocą funkcji formatowania warunkowego. W większości przypadków jest to zupełnie wystarczająca umiejętność.
Jest jednak sposób który zabezpieczy dodatkowo nasze arkusze przed nieumyślnym skasowaniem lub nadpisaniem reguł formatowania, tym bardziej że do edytora Visual Basic osoby z nim nieobeznane bardzo niechętnie zaglądają nawet gdybyśmy nie zabezpieczyli dostępu do odczytania samego makra.
W dalszym ciągu będziemy korzystać z przykładu omówionego poprzednio nieco go tylko poszerzając.
Wiemy już jak określić ostatnią kolumnę i ostatni wiersz.
Tym razem chcę wprowadzić coś nowszego polegającego na użyciu pętli for…next wewnątrz której będzie kilka instrukcji warunkowych if i w zależności od wartości w komórce wykona się instrukcja zmieniająca kolor tła komórki
Cells(wiersz, kolumna).Interior.ColorIndex = indeks_koloru
indeks_koloru - to wartość powinna być w przedziale od 1 do 56
Ponieważ nie wiemy jakie kolory są dostępne pod jakim indeksem to sobie trochę pomożemy generując tabelę kolorów. Zrobimy to w kolumnie ósmej. Po wklejeniu poniższego kodu do okna Visual Basic. Czyli w Excelu za pomocą Lewy Alt + F11 uruchamiamy VBA wybieramy Arkusz1 i wklejamy ten kod
Sub kolory ()
For w = 1 To 56
Cells(w, 7).Value = w
Cells(w, 8).Interior.ColorIndex = w
Next
End Sub
W liniach wewnątrz pętli for znajdują się instrukcje, które kolejno:
1 wstawiają wartość w kolumnę 7
2 zmieniają kolor tła komórki w koluminie 8
Wszystko po to by można było zidentyfikować jaki indeks odpowiada danemu kolorowi.
Będzie to wyglądać mniej więcej tak
Kiedy już wiemy jaki kod ma dany kolor możemy przejść do sedna
Wpiszmy następujący przykładowy kod.
Sub kolory()
For w = 1 To 16
If Cells(w, 2).Value < 5 Then
Cells(w, 1).Interior.ColorIndex = 33
End If
If Cells(w, 2).Value > 5 And Cells(w, 2).Value < 10 Then
Cells(w, 1).Interior.ColorIndex = 26
End If
If Cells(w, 2).Value > 10 Then
Cells(w, 1).Interior.ColorIndex = 3
End If
If Cells(w, 2).Value = 5 Then
Cells(w, 1).Interior.ColorIndex = 3
End If
If Cells(w, 2).Value = 10 Then
Cells(w, 1).Interior.ColorIndex = 44
End If
Next
Po uruchomieniu tego makra dostaniemy coś takiego
Aby pogrubić tekst w danej komórce stosujemy polecenie
Cells(w, 1).Font.Bold = True
To na razie tyle
Nieco więcej przeczytasz klikając w ten link Excel i VBA - formatowanie warunkowe

---------------------------------------------------------- KOCHANI CZYTELNICY ! Obecnie nie prowadzę aktywnej opieki nad tą stroną. Dużo z zawartych tu informacji zdezaktualizowało się i nie będzie tak pomocne jak dawniej. Mam nadzieję że znajdziecie tu jednak coś przydatnego. Gdyby były jakieś szczególne prośby z Waszej strony to możecie kierować je na email dartu@wp.pl Postaram się odpisać, chociaż nie obiecuję że nastąpi to szybko. Dariusz Tupaj 23.02.2019 ----------------------------------------------------------