Stałe skracają i porządkują nasz kod. Warto je przypisywać zwłaszcza do długich ciągów tekstowych – takich jak komunikaty MsgBox lub ścieżki do plików. W tym artykule przeczytasz o tym, jaka jest największa korzyść z ich stosowania i jak ich używam w swoich aplikacjach.
Kiedy używać stałych?
Osobiście korzystam ze stałych praktycznie wszędzie gdzie się da. Są to głównie:
- Nazwy skoroszytów.
- Lokalizacje plików i katalogów.
- Treści komunikatów MsgBox.
- Opisy zgłoszonych przeze mnie błędów.
1 2 3 4 5 |
Public Const gs_NAZWA_SKOROSZYTU As String = "Raport_sprzedaży.xlsx" Public Const gs_KATALOG_BAZOWY As String = "D:\Dane\Projekty" Public Const gs_TRESC_KOMUNIKATU As String = "Operacja zakończona pomyślnie!" |
Przykład z życia
Załóżmy, że w kodzie odwołujemy się wiele razy do zewnętrznego pliku Dane_pracowników.xlsm.
1 2 3 4 5 6 7 |
Sub PrzetwarzanieDanych() Workbooks.Open "D:\Dane\Projekty\Dane_pracowników.xlsm" ' Operacje na pliku... Workbooks("Dane_pracowników.xlsm").Close SaveChanges:=True End Sub |
Po jakimś czasie stwierdzamy, że lepszą nazwą byłoby jednak krótsze Pracownicy.xlsm. W takiej sytuacji warto użyć stałej. Jeśli zmienimy nazwę pliku, wystarczy zaktualizować jej wartość w jednym miejscu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Public Const gs_KATALOG_DANYCH As String = "D:\Dane\Projekty\" Public Const gs_PLIK_PRACOWNICY As String = "Pracownicy.xlsm" Sub PrzetwarzanieDanych() Dim sSciezkaDoPliku As String sSciezkaDoPliku = gs_KATALOG_DANYCH & gs_PLIK_PRACOWNICY ' Otwieramy plik Workbooks.Open sSciezkaDoPliku ' Operacje na pliku... ' Zamykanie pliku Workbooks(gs_PLIK_PRACOWNICY).Close SaveChanges:=True End Sub |
Porządek w stałych
Stałe w kodzie, podobnie jak i zmienne, mogą mieć różny zasięg. Mogą także przechowywać różny typ wartości. Dodatkowo, jak już wspomniałem, mogą się odnosić do różnych kategorii informacji.
Czy jest jakiś sposób aby zapanować nad wszystkimi stałymi? Tak, ale wymaga to pewnej dyscypliny w nazewnictwie.
Po pierwsze, zdecydowanie warto użyć prefiksów. Pierwsza litera do określenia zasięgu stałej. druga do typu zwracanej wartości.
Po drugie, zdecydowanie warto podzielić stałe na grupy, logicznie je uporządkować.
Całość może wyglądać np. w ten sposób.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
' Ścieżki do plików Public Const gs_KATALOG_WINDOWS As String = "C:\WINDOWS" Public Const gs_KATALOG_PROGFILES As String = "C:\Program Files" ' Temat i treść mejla Public Const gs_MAIL_TEMAT As String = "Plik z podsumowaniem" Public Const gs_MAIL_TRESC As String = "Witam" & vbCr & _ "Przesyłam plik, o którym rozmawialiśmy" ' Błędy - numery i komunikaty Public Const gi_BRAK_FOLDERU_APL As Integer = "9999" Public Const gs_BRAK_FOLDERU_APL As String = "Brak katalogu aplikacji!" |
Stałe publiczne najlepiej trzymać w osobnym, dedykowanym module.
Podsumowanie
Stosowanie stałych w VBA przynosi wiele korzyści, które znacząco wpływają na jakość i czytelność kodu.
- Łatwiejsza modyfikacja. Zamiast zmieniać wielokrotnie tę samą wartość w różnych miejscach kodu, wystarczy zaktualizować jedną stałą.
- Poprawa czytelności. Nadanie stałej opisowej nazwy ułatwia zrozumienie, co dana wartość oznacza. Dzięki temu kod jest bardziej przejrzysty dla innych programistów i dla samego autora w przyszłości.
- Redukcja błędów. Zamiast wpisywać wartości ręcznie, można używać stałych, co minimalizuje ryzyko literówek i błędów.
- Optymalizacja wydajności. Stałe są przechowywane w pamięci jako niezmienne wartości, co przyspiesza działanie kodu w porównaniu do zmiennych
Stałe to świetne narzędzie, które każdy programista VBA powinien mieć w swoim arsenale!