Na samym dole znajdziesz kod z komentarzami, tutaj zajmiemy się możliwością uruchamiania kodu krok po kroku, czyli linijka po linijce.
Kod krok po kroku możesz uruchomić za pomocą menu Debug i polecenia Step Into (skórt klawiszowy – klawisz F8).

Wstęp do makr 07 - - Tłumaczenie makra formatującego komórki i jego modyfikacja 01

Inny rozwiązaniem, jeśli masz trudności z odnalezieniem, gdzie został zapisany Twój kod naciśnięcie skrótu klawiszowego Alt + F8, żeby pokazała się lista makr w otwartych plikach wybranie tego, które Cię interesuje, a następnie kliknięcie przycisku Wkrocz.

Wstęp do makr 07 - - Tłumaczenie makra formatującego komórki i jego modyfikacja 02

Wtedy zaczniesz uruchamiać dany kod krok po kroku, dlatego lepiej upewnij się, że byłeś w odpowiednim miejscu arkusza przed uruchomieniem kodu. Jeśli chcesz zatrzymać makro wystarczy, że naciśniesz przycisk stop pod menu edytora VBA.

Linijka, która ma zostać uruchomiona jest przez edytor VBA podświetlana na żółto.

Wstęp do makr 07 - - Tłumaczenie makra formatującego komórki i jego modyfikacja 03

Najszybciej uruchamiasz ją naciskając klawisz F8. Czasami możesz zobaczyć, że edytor VBA podświetla kilka linijek kodu, ale wynika to z zastosowania specjalnego połączenia spacji i znaku pokreślenia (" _"), która informuje edytor, że kod ciągnie się dalej w następnej linijce.

W trakcie uruchamiania krok po kroku makra możesz przeskakiwać do Excela i obserwować zmiany jakie wprowadził kod VBA, ale pamiętaj, żeby nie zmieniać zaznaczenia i wartości, bo kolejne linijki kodu VBA mogą zadziałać nieprawidłowo.

Ważną informacją może być to, że w trakcie uruchomienia kodu krok po kroku możesz podglądać wartości zmiennych i stałych wystarczy, że najedziesz na nie myszką.

Wstęp do makr 07 - - Tłumaczenie makra formatującego komórki i jego modyfikacja 04

Sub Formatowanie()
'Nakładanie formatowania walutowego.
'Zwróć uwagę, że jest zapisane w stylu angielskim
'ale ustawienia regionalne odpowiednio je konwertują
Selection.NumberFormat = "#,##0.00 $"
'Zmiana wyrównanie w poziomie na do środka.
'Rejestrator zarejestrował dużo więcej kodu niż potrzeba,
'gdyż zapisał wszystkie właściwości dotyczące wyrównania
'w bloku With Selection...End With
With Selection
'Poniższa linijka to wyśrodkowanie w poziomie

.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False

End With
'Zmiana czcionki. Znów rejestrator zapisał wszystkie
'właściwości, mimo, że zmieniliśmy tylko rozmiar
'czcionki (.Size = 9) oraz styl na pogrubiony
'(.FontStyle = "Pogrubiony")
With Selection.Font

.Name = "Calibri"
.FontStyle = "Pogrubiony" 'zmieniona przez nas właściwość
.Size = 9 'zmieniona przez nas właściwość
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor

End With
'Największy kawałek kodu dotyczący obramowania (Borders)
'dla każdej strony obramowanie nakładane jest oddzielnie
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlDash
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlDash
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlDash
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlDash
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
'Dodany blok by rysował poziome wewnętrzne obramowanie
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlDash
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
'obramowania wewnętrzne ustawione na nic/brak (xlNone)
Selection.Borders(xlInsideVertical).LineStyle = xlNone
'zakomentowany kod by nie czyścił poziomego wewnętrznego obramowania
'Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
'Nadanie wybrane koloru wypełnieniu
'Znów więcej zapisanych właściości niż zmodyfikowaliśmy
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With

End Sub

Chcesz ze mną poznać możliwości VBA? Zobacz kiedy planowana jest następna edycja 30dniowego kursu online:
http://excelw30dni.pl/kategoria-produktu/szkolenia-vba/

Pozdrawiam
Adam Kopeć
Miłośnik Excela