1. Formatowanie komórek i czcionek – wprowadzenie
Komórki jak i inne elementy arkusza Excela możemy formatować z poziomu kodu VBA. Same formatowanie możemy robić na 2 sposoby. Pierwszym sposobem jest ustawienie każdego formatu za pomocą osobnego bloku kodu. Możemy także użyć klauzuli With do formatowania komórek i czcionek, co uprości sprawę. Możemy w ten sposób odnieść się raz do naszego obiektu i wstawić dowolne formaty. Możemy formatować dowolne parametry, dokładnie tak, jakbyśmy to robili bezpośrednio w Excelu. Jeśli nie wiesz w jaki sposób napisać blok kodu, by sformatować dowolną komórkę lub jej zawartość, najlepszym sposobem będzie tutaj nagranie takiego formatowania za pomocą rejestratora makr, a następnie przeanalizowanie spisanego kodu. W formatowaniu możemy odnieść się zarówno do pojedynczej komórki poprzez odwołanie Cells(), jak i całego zakresu używając w tym celu obiektu Range(). By przeprowadzić nasze ćwiczenie wypełnijmy zakres A1:A20 dowolnym tekstem.
2. Formatowanie czcionek – Jak formatować czcionki w VBA
Najprostszym sposobem sformatowania czcionki np poprzez ustawienie jej wielkości, jest zaznaczenie komórki, następnie odniesienie się do czcionki i jej konkretnej właściwości, w naszym przypadku jej rozmiaru. Przykład poniżej.
Sub FontFormatingExample() Range("A1").Select Selection.Font.Size = 20 End Sub
Jeśli chcielibyśmy sformatować więcej niż jedną właściwość czcionki jednocześnie, nie musimy pisać kolejnych powtarzających się bloków kodu. Korzystamy w tym wypadku z klauzuli With. Tak jak w pierwszym przykładzie odniesiemy się do wybranego zakresu. Następnie zmienimy wielkość czcionki, pogrubimy ją i ustawimy czcionkę jako Arial.
Sub FontFormatingExample() Range("A2").Select With Selection.Font .Size = 20 .Bold = True .Name = "Arial" End With End Sub
W ten właśnie sposób możemy formatować dowolną właściwość czcionek w arkuszach Excela. Poniżej najważniejsze właściwości, z których możemy korzystać.
Sub FontFormatingExample() Range("A5").Select With Selection.Font .Size = 25 'Rozmiar .Bold = True 'pogrubienie True/False .Color = vbBlack 'kolor .Italic = True 'pochylenie True/False .Name = "Arial" 'rodzaj czcionki .Underline = True 'podkreślenie True/False End With End Sub
W VBA kolory możemy zapisywać na kilka różnych sposobów. Możemy stosować zarówno stosować oficjalne nazewnictwo VBA poprzedzając nazwę prefiksem vb, jak i korzystać z kolorów RGB.
Nazwa VBA | Nazwa RGB |
vbBlack | RGB(0 ,0, 0) |
vbWhite | RGB(255 ,255, 255) |
vbRed | RGB(255, 0, 0) |
vbGreen | RGB(0, 255, 0) |
vbBlue | RGB(0 ,0, 255) |
vbYellow | RGB(255, 255, 0) |
vbMagenta | RGB(255 ,0, 255) |
vbCyan | RGB(0 ,255, 255) |
3. Formatowanie komórek – Jak formatować komórki w VBA
W przypadku wnętrz komórek , tak jak i w przypadku czcionek możemy odnieść się do pojedynczej właściwości wnętrza komórki. Jeśli chcemy zmienić kolory, stosujemy tutaj również kolory opisane w poprzednim punkcie.
Sub InteriorFormatingExample() Range("A4").Select Selection.Interior.Color = 65535 End Sub
Stosując klauzulę With możemy zmienić następujące własności wnętrza komórek:
Sub InteriorFormatingExample() Range("A12:A14").Select With Selection.Interior .Pattern = xlSolid 'wzór wypełnienia komórki .PatternColorIndex = 1 'xlAutomatic 'wzór koloru, przyjmuje wartości od 1 do 56 .Color = RGB(0, 0, 255) ' ustawia kolor wnętrza komórki przyjmuje wartości vbColor lub RGB .TintAndShade = 0 'cień i odcień .PatternTintAndShade = 0 'cień i odcień wg. wzoru End With End Sub
4. Formatowanie zaznaczenia – Jak formatować zakres w VBA
Prócz czcionek i wnętrz komórek możemy formatować także pozostałe parametry dotyczące komórki. Możemy ustawić np zawijanie tekstu lub też scalanie komórek. Szczegółowy opis parametrów, które możemy wykorzystać zamieszczam poniżej.
Sub FormatingSelection() Range("A15:A20").Select With Selection .HorizontalAlignment = xlLeft 'równanie tekstu do lewej/prawej x1Left/xlRight .VerticalAlignment = xlBottom 'równanie tekstu do góry/dołu xlTop/x1Bottom .WrapText = False 'zawijanie wierszy True/False .Orientation = -1 'orientacja tekstu -1 automatyczna, 0 pionowa, 1 pozioma .AddIndent = True 'wstawia akapit, przyjmuje wartości True/False .IndentLevel = 10 'Wcięcie tekstu, wprowadzamy liczbę znaków wcięcia .ShrinkToFit = False 'dopasowuje wielkość tekstu do komórki , przyjmuje wartości True/False .MergeCells = False 'Scalanie komórek True/False End With End Sub
5. Zadania (Rozwiązanie możesz wpisać w komentarzu)
5.1 Napisz makro, które wykona następujące operacje na komórkach: Wypełni 5 sąsiadujących ze sobą komórek arkusza dowolnym tekstem. Następnie je scali, ustawi wielkość czcionki na 24, użyje czcionki Arial. Następnie pogrub czcionkę. Kolor wnętrza komórki zmień na zielony używając kolorów RGB.
15 komentarzy “Formatowanie komórek i czcionek w Excel VBA”
bardzo pomocny artykuł. Wielkie dzięxxxxxxxxxx
Dobrze, że się przydał. Dzięki za koment:)
Zadanie 5.1
Sub Zadanie_5_1()
Range(„A3:E3”).Select
With Selection
.MergeCells = True
End With
With Selection.Font
.Size = 24
.Name = „Arial”
.Bold = True
End With
With Selection.Interior
Selection.Interior.Color = RGB(0, 255, 0)
End With
End Sub
a jak sprawdzić na jakim poziomie jest obecnie wcięcie danej komórki?
Rozwiązanie zadania (tylko przy scalaniu bierze wartość komórki pierwszej od lewej strony więc nie pokażą się wszystkie dane)
Sub zadanie_8()
Dim a As Integer
a = 1
Cells(1, a) = „Imię ”
Cells(1, a + 1) = „Nazwisko ”
Cells(1, a + 2) = „Dzień urodzenia ”
Cells(1, a + 3) = „Miesiąc urodzenia ”
Cells(1, a + 4) = „Rok urodzenia ”
Range(„a1:e1”).Select
With Selection
.MergeCells = True
.Font.Name = „Arial”
.Font.Size = 24
.Font.Bold = True
.Interior.Color = RGB(0, 255, 0)
End With
End Sub
PS. Super jest ten kurs. Jakiś czas temu kupiłem inny kurs z VBA ale tutaj zdecydowanie lepiej idzie mi przyswajanie wiedzy. Bardzo dziękuje za możliwość nauki i czerpania wiedzy z tego kursu. Kto powiedział, że nauka nie może być przyjemna 😉
Coraz lepiej, kurs się rozkręca, na razie dzień2
W moim excelu nie działa opcja scalania komórek. Czy jest jakieś inne polecenie poza .MergeCells = True ?
Sub zadankoo()
Application.DisplayAlerts = False
Range(„A1:E1”).Value = „przyklad”
Range(„A1:E1”).Select
With Selection
.MergeCells = True
End With
ActiveCell.Select
With Selection.Font
.Size = 24
.Name = „Arial”
.Bold = True
End With
ActiveCell.Select
With Selection.Interior
.Color = vbGreen
End With
End Sub
Dodałem Application.DisplayAlerts = False aby nie pojawiał się komunikat przy scalaniu komórek 🙂
Sub FormatowanieCzcionek7()
Sheets(„Arkusz2”).Select
Range(„A1”, „E1”) = „Dowolny tekst”
Range(„A1”, „E1”).Select
With Selection
.MergeCells = True
.Font.Size = 24
.Font.Name = „Arial”
.Font.Bold = True
.Interior.Color = RGB(0, 255, 0)
.HorizontalAlignment = xlCenter
End With
End Sub
Sub FormatingExample()
Application.DisplayAlerts = False
With Range(„B1:B5”)
.MergeCells = False
.Value = „Random Text”
With .Font
.Size = 24
.Name = „Arial”
.Bold = True
End With
.Interior.Color = rgbCadetBlue
.MergeCells = True
End With
End Sub
Sub FormatowanieKomorek()
Cells.Delete
Range(„G2:K2”) = „Dzień dobry”
With Range(„G2:K2”)
.MergeCells = True
.Font.Size = 24
.Font.Name = „Arial”
.Font.Bold = True
.Interior.Color = RGB(0, 255, 0)
End With
End Sub
Sub Zadanie5_1()
Range(„A1:E1”) = „Dowolny tekst”
Range(„A1:E1”).Select
With Selection
.MergeCells = True
.HorizontalAlignment = xlCenter
.Font.Size = 24
.Font.Name = „Arial”
.Font.Bold = True
.Interior.Color = RGB(0, 255, 0)
End With
End Sub
Sub nowosc()
Range(„c1”) = „Szkoła”
Range(„c2”) = „uczeń”
Range(„c3”) = „zadanie”
Range(„c4”) = „odpoczynek”
Range(„c5”) = „zainteresowania”
Range(„C1:C5”).Select
With Selection
.MergeCells = True
.Font.Size = 24
.Font.name = „Arial”
.Font.Bold = True
.WrapText = True
.Interior.Color = RGB(0, 255, 0)
End With
End Sub
Zad. 1
Zad. 2