|
Inna drogą realizacji procesu podjęcia decyzji w programie jest użycie instrukcji (struktury) Select Case.Instrukcja Select Case ocenia wyrażenie tylko raz i w zależności od jego wartości, wykonuje zadany blok instrukcji. Każda instrukcja Case struktury Select Case określa jedną z potencjalnych wartości, którą może zwrócić wyrażenie. Gdy wartość wyrażenia pasuje do wartości określonej przez instrukcje Case wykonywany jest kod związany z tą instrukcją Case. Jeżeli wartość wyrażenia nie pasuje do żadnej wartości określonej przez instrukcje Case wtedy wykonywany jest blok kodu związany z instrukcją Case Else. Struktura Select Case może zawierać wiele instrukcji Case ale może zawierać tylko jedną instrukcje Case Else. Instrukcja Case Else nie jest obowiązkowa w bloku instrukcji Select Case ale jeżeli jest to powinna się znajdować za wszystkimi instrukcjami Case. Struktura Select Case może przybierać różne formy i być bardzo rozbudowana, poniżej przedstawiam jej podstawową formę.

Select Case Wyrażenie Case Wartość1 [blok kodu wykonywany, jeżeli Wyrażenie równa się Wartość1] Case Wartość2 [blok kodu wykonywany, jeżeli Wyrażenie równa się Wartość2] ... Case Else [blok kodu wykonywany, jeżeli Wyrażenie nie równa się żadnej z wartości określonej przez instrukcje Case] End Select
Select Case - instrukcja ta występuje jako pierwsza określa ona wartość która będzie testowana na równość możliwym wartościom.
Wyrażenie - to jest to co testujemy może to być dowolne wyrażenie numeryczne lub wyrażenie tekstowe.
Case - określa wartość do której próbujemy dopasować wartość testowaną.
Case Else - poniżej tej linii kodu wykonywane są instrukcje jeżeli wartość testowana nie pasuje do żadnej z wartości określonej przez instrukcje Case.
End Select - kończy blok instrukcji Select Case.

Private Sub CommandButton1_Click() Dim NumerDnia NumerDnia = Range("A1").Value If IsNumeric(NumerDnia) = True Then Select Case NumerDnia Case 1 Range("A2").Value = "Niedziela" Case 2 Range("A2").Value = "Poniedziałek" Case 3 Range("A2").Value = "Wtorek" Case 4 Range("A2").Value = "Środa" Case 5 Range("A2").Value = "Czwartek" Case 6 Range("A2").Value = "Piątek" Case 7 Range("A2").Value = "Sobota" Case Else Range("A2").Value = "Poza zakresem wpisz wartość od 1 do 7" End Select Else Range("A2").Value = "Wpisz wartość liczbową" End If End Sub

Przykład na pierwszy rzut oka wygląda być może skomplikowanie ale już wszystko wyjaśniam. Na początku za pomocą instrukcji Dim deklarujemy zmienną o nazwie NumerDnia, która będzie przechowywała wartości. Temat deklarowania zmiennych opiszę w dalszej części kursu. W następnej linii kodu określamy wartość zmiennej czyli nasza zmienna NumerDnia = Range("A1").Value. W przykładzie wykorzystaliśmy też poznaną wcześniej instrukcje If... Then... Else oraz funkcje IsNumeic do sprawdzenia czy wartości wprowadzane do komórki A1 arkusza są numeryczne. Funkcja IsNumeric sprawdza czy dane wyrażenie może być przekształcone w liczbę. Główna część kodu to blok naszej instrukcji Select Case, w której sprawdzamy wartość zmiennej NumerDnia czyli wartość jaka jest w komórce A1 arkusza. Jeżeli wartość zmiennej NumerDnia wynosi 1 w komórce A2 arkusza wyświetlany jest napis: Niedziela jeżeli 2: poniedziałek itd. Gdy wartość wprowadzona do komórki A1 arkusza jest różna od wartości od 1 do 7, wyświetlany jest napis: Poza zakresem wpisz wartość od 1 do 7. Jeżeli zaś wartość nie jest wartością numeryczną wyświetlany jest napis: Wpisz wartość liczbową. Na podstawie tego przykładu chciałbym też pokazać jak zagwarantować aby potrzebne wartości były prawidłowo wprowadzane. Celem przetestowania przykładu wykonaj następujące czynności:
Z menu Widok wybieramy Paski narzędzi a następnie Przybornik formantów (jeżeli nie jest widoczny).
W Przyborniku formantów wyszukaj i kliknij na ikonę Przycisk polecenia a następnie miejsce w arkuszu gdzie chcesz go umieścić. Ikona Tryb projektowania w przyborniku powinna się uaktywnić.
Kliknij dwa razy lewym przyciskiem myszy na wstawiony przycisk (ikona Tryb projektowania w przyborniku powinna być aktywna). Powinien uruchomić się Edytor Visual Basic z widocznym oknem Kod programu (Code), w oknie tym zawarta powinna być deklaracja procedury Click naszego Przycisku polecenia.
W procedurze zdarzenia Click Przycisku polecenia wpisz odpowiednie linie kodu.
Zamknij Edytor Visual Basic Alt+Q i powróć do arkusza Excela.
Następnie wyłącz tryb projektowania (jeżeli jest aktywny) klikając na ikonę Zakończ tryb projektowania w Przyborniku formantów.
Wpisz wartość np. 2 do komórki A1 arkusza następnie kliknij na Przycisk polecenia.
Celem ponownego przetestowania, wpisz inną wartość do komórki A1 arkusza i ponownie kliknij na przycisk.

 Dla dociekliwych:
Dla dociekliwych przedstawiam przykład w którym przy każdym uruchomieniu dokumentu Excela wyświetlany jest napis, odpowiedni w zależności od dnia tygodnia. Napis wyświetlany jest w komórce A2 arkusza, który jest aktywny przy otwarciu dokumentu. W przykładzie do określenia dnia tygodnia wykorzystaliśmy funkcje DatePart. Kod przykładu umieszczamy w procedurze zdarzenia Workbook_Open() obiektu ThisWorkbook. Aby umieścić kod wykonaj czynności.
Będąc w Edytorze Visual Basic w oknie Project kliknij dwa razy na obiekt ThisWorkbook.
W otwartym oknie Code wpisz kod z przykładu.
Zamknij a następnie uruchom dokument celem przetestowani przykładu.
Private Sub Workbook_Open() Select Case DatePart("w", Date) Case 1 Range("A2").Value = "Niedziela, jutro ch... poniedziałek" Case 2 Range("A2").Value = "Dzisiaj jest poniedziałek, początek wspaniałego tygodnia" Case 3 Range("A2").Value = "Wtorek, na szczęście to nie poniedziałek" Case 4 Range("A2").Value = "Środa, za chwilę z górki" Case 5 Range("A2").Value = "Czwartek, wczoraj chyba przesadziłeś, boli głowa co ?" Case 6 Range("A2").Value = "Cudownie już piątek" Case 7 Range("A2").Value = "Sobota, co Ci będę mówił" End Select End Sub
wyrażenie - kombinacja słów kluczowych, operatorów, zmiennych i stałych, która daje w wyniku ciąg znaków, liczbę lub obiekt. Wyrażenia mogą być używane do przeprowadzania obliczeń, wykonywania operacji na znakach lub testowania danych.
|