W czasie kompilacji programu Visual Basic moto podjąć decyzję, czy należy odtworzyć. czy tez pominąć pewne bloki instrukcji Korzystając z kompilacji wam tików ej. nasz program może zachować się w zależności od podanego warunku. Kompilacja warunkowa pozwala na przykład na zaprojektowanie aplikacji, która może działać na różnych platformach (Windows lub Macintosh). Kompilacja warunkowa jest także wykorzystywana do dystrybucji tego samego programu w wielu wersjach językowych. Kod programu wyłączony podczas kompilacji warunkowej jest całkowicie pomijany, w związku z czym nic wpływa na rozmiar ani efektywność programu
548_Visual Basic w Kxcclu 2000 - Programowanie dla każdego
Przy odtwarzaniu procedury po raz pierwszy Vi$ual Basic tłumaczy instrukcje VBA użyte w danej procedurze na język zrozumiały przez komputer. Proces ten określa się kompilacją programu. Możemy samodzielnie skompilować cały projekt VBA. w każdej chwili wybierając z menu Analiza opcję Kompiluj (Debug I font-pile ) (w nazw ie opcji umieszczona jest nazwa bieżącego projektu VBA).
Aby umożliwić kompilację warunkową, należy skorzystać ze specjalnych wyrażeń zwanych dyrektywami. Najpierw deklaruje się stałą typu Boolean za pomocą dyrektywy fCoost. następnie zaś sprawdza się tę stałą wewnątrz dyrektywy #If...Then... ffEbe. Porcja kodu. którą chcemy warunkowo kompilować, musi być wpisana między tymi dyrektywami. Zwróćmy uwagę, ze znane z instrukcji warunkowej If... Then... Klse słowa kluczowe If oraz Ełse są poprzedzone znakiem numeru (#>
Jeżeli dana porcja programu ma być odtworzona, wartość stałej kompilacji należy ustaw ie na True (-1). w przeciwnym razie wartość tej stałej powinna być Fałse
Deklaracji stałych kompilacji warunkowej należy dokonać w sekcji deklaracji w karcie modułu, na przykład
•Conat User = Tru«
Powyższa instrukcja deklaruje stalą kompilacji o nazwie User V* przykładzie poniżej procedura WhatDay pobiera i wyświetla informację w języ ku polskim, gdy stała kompilacji o nazwie jpolski ma wartość Tnie (Prawda) Procedura WhatDay woła funkcję DzieńTygodnia, która zwraca dzień tygodnia na podstawie podanej przez użytkownika daty. Funkcja Dzień Tygodnia korzysta z wbudowanej funkcji Visual Basic o nazwie Choose. która wybiera i zwraca określoną wartość z listy argumentów Jeżeli chcemy skompilować program w języku angielskim, wystarc/\ zmienić wartość stałej kompilacji na Falsc < Fałsz i i Visual Basic skoczy do bloku instrukcji, który znajduje się po dyrektyw ie #Eise. Gdy wartość stałej kompilacji jest Falsc. procedura WhatDay woła funkcję WrekdayName która zwraca dzień tygodnia korzystając ze struktury Selcct Case
1. Wstaw nowy moduł do bieżącego projektu VBA i zmień nazwę tego modułu Conditional
2. Wpisz następujące procedury i funkcje:
___549
•Conat verPolish * True Sub WhatDayI)
Dim dayNr Afl Xnteqer (If verPoliah • Truś Then
dayNr - MaekdayUnputBoxt"Wpisz datę, np. 00/01/2001"))
MsgBox "To bodzie " 4 DzieATyęodnla(dayNri s IIIM
WeekdayName
• End If End Sub
Functlon OstaATyęodnia(dayNr Aa Inteęar) Aa Strlng
DzlertTygodnla - Chooaa(dayNr, "niedziela", "poniedziałek", "wtorek", _ "środa", "czwartek", "płatek", "sobota")
End Function
Punction X*---.1 i/Kar- I Ar. tri . i Select Caae WeekdayłInput&oal‘Enter datę, eg. 00/01/2001•)) Case 1
WeokdayNnmo * *Sunday’
Case 2
WeekdayName *Monday'
Case 1
WeekdayName •Tuesday*
Case 4
WeekdayName •Wedneaday’
Case 5
WeekdayName 'Thurnday*
Case 6
WeekdayName •Priday*
Case 7
WeekdayName - ‘Saturday*
End Select
MaęBox *Thla datę fal la on * 4 WeekdayName 4 End Function
3. Uruchom procedurę WhatDay
_Vwual Basic w Łxcdu 2000 Programowanie dla każdego
Ponieważ wartość stałej kompilacyjncj u góry kartki modułu jest True (verPo-llsh). Visual Basic wykonuje polską wersję proedury WhatDay Program pyta o wprowadzenie danych i wyświetla rezultat w tym samym języku Aby uruchomić angielską wersję kodu. należy zmienić wartość stałej rerPoliah na Fabe i ponownie odtworzyć tę procedurę
Zamiast deklaracji stałych warunkowych kompilacji u góry karty modułu, można :, wiimiummi i Vn/v«i/i;i iooK i»»i>m-L.i«u PropertSes
. okno Właściwości przedstawione na rysunku 13.13. Przy korzystaniu i Właściwości należy wpisać następujące wyrażenie w polu tekstu Conditional ( ompilatkin Arguments w celu włączenia angielskiej WCnyi proocdw) WhatDay: v«rPoliah • 0
Jc/eli mamy więcej mz jedną Małą warunkową kompilacji, to stale tc musimy oddzielić dwukropkiem.
CMolD-
f
OwOg1 *»—«»_
Rysunek 13.15 Stałą warunkową kompilacji można zadeklarować u góry karty modułu lub w oknie Właściwości, ak nigdy w obu tych mieiscach