Jestem wielkim zwolennikiem korzystania ze stałych w swoich aplikacjach.
Obszary Użycia Stałych
Stałych używam praktycznie wszędzie gdzie się da. Począwszy od nazw dla skoroszytów, poprzez adresy plików i katalogów, treści komunikatów MsgBox, aż do opisów (zgłoszonych przeze mnie) błędów.
Przykład Zastosowania
Rozważmy następujący przykład.
Załóżmy, że w kodzie odwołujemy się do zewnętrznego pliku Dane_pracowników.xlsm. Po jakimś czasie stwierdzamy jednak, że lepszą nazwą byłoby słowo Pracownicy.xlsm. W takiej sytuacji musimy kliknąć CTRL+H aby zamienić jeden tekst na drugi we wszystkich modułach.
Wprowadza to potencjalne niebezpieczeństwo, ponieważ nieumiejętne korzystanie z narzędzia może nam wprowadzić zmiany w kodzie, których nie chcemy.
Wprowadzając stałą gsPLIK_PRACOWNICY = “Dane_pracowników.xlsm“ i odwołując się do niej konsekwentnie w kodzie zyskujemy kontrolę nad aplikacją.
W przypadku, gdy chcemy zmienić nazwę pliku, zamiast CTRL + H wystarczy zmienić wartość tej stałej na Pracownicy.xlsm, a makro zaktualizuje się samo. Jednym słowem luksus.
Stałe publiczne dla porządku najlepiej trzymać w osobnym module.
Podział Stałych
Stałe, podobnie jak zmienne, mogą mieć różny zasięg. Mogą także przechowywać różny typ wartości. Dodatkowo, jak już wspomniałem, mogą się odwoływać do przeróżnych elementów Excela i VBA (np. nazw plików, nazw makr, nazw dla … nazw, adresów komórek, tekstów wyświetlanych na pasku stanu itd.).
Czy jest jakiś sposób aby logicznie zapanować nad wszystkimi stałymi? Moim zdaniem tak, ale wymaga to pewnej dyscypliny w nazewnictwie.
Po pierwsze, zdecydowanie warto wprowadzić dwa przedrostki. Pierwszy, do określenia zasięgu stałej. Drugi, do typu zwracanej wartości (nie dotyczy to stałych numerycznych, które zwracają tylko liczby).
Po drugie, zdecydowanie warto podzielić te stałe na grupy, aby utrzymać porządek w kodzie.
Screen
' Ścieżki do plików
Public Const gs_WINDOWS_FOLDER As String = "C:\WINDOWS"
Public Const gs_PROGRAM_FILES_FOLDER As String = "C:\Program Files"
' Temat i treść mejla
Public Const gs_TEMAT_MAILA As String = "Plik z podsumowaniem"
Public Const gs_TRESC_MAILA 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!"