niedziela, 8 lipca 2012

Jak za pomocą VBA formatować komórki w Excel?

Formatowanie arkusza Excel za pomocą kodu VBA jest niezbędne jeżeli chcemy:
  • ujednolicić wygląd generowanych dokumentów
  • odciążyć pracowników od pracochłonnych czynności związanych z wyglądem dokumentów
Formatowanie tekstu
Podstawowe właściwości tekstu wpisanego w komórkę arkusza, przechowywane są w obiekcie Cells.Font.
Aby zmienić rozmiar tekstu wpisujemy wielkość w punktach:
Cells(1, 1).Font.Size = 15
Pogrubienie tekstu:
Cells(1, 1).Font.Bold = True
Pochylenie tekstu:
Cells(1, 1).Font.Italic = True
Podkreślenie tekstu:
Cells(1, 1).Font.Underline = True
Przekreślenie tekstu:
Cells(1, 1).Font.Strikethrough = True
Indeks dolny:
Cells(1, 2).Font.Subscript = True
Indeks górny:
Cells(1, 3).Font.Superscript = True
Ponadto możliwe jest określenie kierunku tekstu w komórce:
Cells(1, 3).Orientation = 90
Powyższy kod spowoduje, że tekst w komórce C1 wpisywany będzie w kierunku od dołu do góry. Wartość 0 oznacza standardowy tekst poziomy.
W celu wyrównania tekstu w poziomie użyjemy składni:
Cells(1, 3).HorizontalAlignment = xlCenter
Parametry w formatowaniu poziomym tekstu:
  • xlCenter - tekst wyśrodkowany
  • xlDistributed - tekst zawsze zaczyna się przy lewej a kończy przy prawej krawędzi komórki
  • xlJustify - tekst wyjustowany
  • xlLeft - tekst z lewej
  • xlRight - tekst z prawej
Wyrównanie tekstu w pionie:
Cells(1, 3).VerticalAlignment = xlCenter
i parametry wyrównania pionowego:
  • xlBottom - tekst na dole komórki
  • xlCenter - tekst w środku komórki
  • xlDistributed - tekst zaczyna się i kończy przy krawędziach komórki
  • xlJustify - tekst wyjustowany w pionie
  • xlTop - tekst na górze komórki
Czasami chcemy w jednej komórce użyć tekst o różnym formacie np. chcemy wpisać symbol H2O:
Cells(5, 1).Value = "H2O"
Cells(5, 1).Characters(2, 1).Font.Subscript = True

Powyższy kod wpisze do komórki A5 symbol H2O. W pierwszej linijce wpisany został tekst a w drugiej za pomocą składni Characters.Font możemy sformatować tylko wybrane znaki. We właściwości Characters(2, 1) 2 oznacza numer znaku od którego rozpoczynamy formatowanie natomiast 1 to ilość znaków do formatowania.
Przy okazji, aby sprawdzić ilość znaków w komórce możemy użyć polecenia:
n = Cells(5, 1).Characters.Count
Formatując komórki w arkuszu Excel nie możemy zapominać o sposobie wyświetlania wartości przez program. Aby ustawić specyficzny sposób wyświetlania wykorzystamy właściwość NumberFormat:
Cells(5, 1).NumberFormat = "0.00"
Kod spowoduje, że wartości w komórce A5 wyświetlane będą z precyzją 2 miejsc po przecinku.
Możemy użyć następujących sposobów wyświetlania wartości:
  • NumberFormat = "General" - formatowanie ogólne
  • NumberFormat = "0" - Zapis liczbowy - odpowiednia ilość miejsc po przecinku
  • NumberFormat = "0.0"
  • NumberFormat = "0.00"
  • NumberFormat = "0.000"
  • NumberFormat = "0.0000"
  • NumberFormat = "#,##0.00 $" - Zapis walutowy
  • NumberFormat = "m/d/yyyy" - data krótka
  • NumberFormat = "[$-F800]dddd, mmmm dd, yyyy" - data długa
  • NumberFormat = "[$-F400]h:mm:ss AM/PM" - Godzina
  • NumberFormat = "0.00%" - zapis procentowy
  • NumberFormat = "# ?/?" - zapis liczby w postaci ułamka
  • NumberFormat = "0.00E+00" - format naukowy liczb - zapis wykładniczy
  • NumberFormat = "@" - zapis tekstowy
Kolorowanie tekstu oraz komórek
Aby zmienić kolor tekstu komórki używamy składni:
Cells(1, 1).Font.Color = rgbRed
gdzie rgbRed oznacza stałą koloru czerwonego.
Jeżeli nie możemy znaleźć specyficznego koloru możemy zapisać go za pomocą składni RGB:
Cells(1, 1).Font.Color =RGB(255,0,0)
W przykładzie zapisany został kod koloru czerwonego. Szczegółowe informacje na temat kolorowania tekstu znajdziemy w artykule Jak w Excel zmienić kolor tekstu komórki?
Zmiana koloru wypełnienia komórki:
Cells(1, 1).Interior.Color = rgbYellow
Kod spowoduje pokolorowanie komórki na kolor żółty.
Obramowania komórek
Aby rysować obramowania komórek użyjmy kodu:
With Cells(2, 1).Borders
.LineStyle = xlContinuous
.ColorIndex = xlColorIndexAutomatic
.Weight = 2
End With

Kod spowoduje obramowanie komórki A2.
Parametr LineStyle określa styl linii obramowania i może przyjąć wartość:
  • xlAutomatic - styl automatyczny
  • xlContinuous - linia ciągła
  • xlDash - linia przerywana
  • xlDashDot - kreska - kropka
  • xlDashDotDot - kreska i dwie kropki
  • xlDot - linia z kropek
  • xlDouble - podwójna linia
  • xlLineStyleNone - bez linii
  • xlSlantDashDot
  • xlGray25 - kolor siwy 25%
  • xlGray50 - kolor siwy 50%
  • xlGray75 - kolor siwy 75%
Parametr ColorIndex określa dodatkowe właściwości ramek:
  • xlColorIndexNone - brak obramowania
  • xlColorIndexAutomatic - kolor automatyczny
Parametr Weight określa grubość linii. Może przyjmować wartości liczbowe z przedziału od 1 do 4, i tak:
  • 1 - linia kropkowana
  • 2 - linia cienka - lub xlThin
  • 3 - linia gruba - lub xlThick
  • 4 - linia bardzo gruba
Ponadto możemy określić kolor obramowania:
.Color = rgbRed
Kod zmieni kolor ramki na czerwony. Ustalając kolor obramowania nie wykorzystujemy parametru ColorIndex.
Ramki można rysować nad/pod/z prawej/z lewej strony komórki. I tak kod:
Cells(2, 3).Borders(xlEdgeRight).LineStyle = xlContinuous
zmieni tylko prawe obramowanie komórki C2.
Możemy formatować krawędzie komórek za pomocą parametrów:
  • xlEdgeTop - górna krawędź komórki
  • xlEdgeBottom - dolna krawędź komórki
  • xlEdgeLeft - lewa krawędź komórki
  • xlEdgeRight - prawa krawędź komórki
  • xlDiagonalUp - komórka przekreślona w górę
  • xlDiagonalDown - komórka przekreślona w dół
Dodatkowe informacje
Aby formatować nie jedną komórkę ale cały zakres komórek musimy użyć obiekt Range:
Range("E2:G4").Borders.LineStyle = xlContinuous
Kod narysuje tabelkę (ramki) w zakresie od E2 do G4
Zakres komórek można zapisać również tak:
Range(Cells(2, 1), Cells(4, 3)).Interior.Color = rgbYellow
Komórka A2 (2,1) jest początkiem obszaru natomiast C4 (4,3) końcem.

1 komentarz: