Instrukcja Select…Case_

Instrukcja  VBA Select…Case_ to wyrażenie będące faktycznie odpowiednikiem funkcji Excela Przełącz().  Dla danej zmiennej wyszukuje pierwszą wartość będącą prawdą Prawdą i wykonuje przypisany do niego ciąg kodu. 

W kodzie VBA instrukcja wygląda tak:

Public Sub WyrazenieSelectCase()
Dim DzienTyg As Integer
DzienTyg = Weekday(Date, vbMonday)
Select Case  DzienTyg
Case Is < 6
MsgBox „Dziś jest sobota!”
'(…)
Case  7
MsgBox „Miłej niedzieli”
'(…)
Case Else
MsgBox „Dzień roboczy”
End Select
End Sub

Stosując tę instrukcję trzeba pamiętać, że kolejność sprawdzania kolejnych warunków ma znaczenia. 
Np. w takiej funkcji:

Public Function JakaLiczba(Ile)
Select Case Ile
Case Is < 100
JakaLiczba = „Mniej niż 100”
Case Is < 0
JakaLiczba = „Ujemna”
Case Is > 100
JakaLiczba = „Więcej niż 100”
End Select
End Function

Jeżeli argumentem wejściowym Ile będzie wartość ujemna – i tak otrzymany wynik będzie JakaLiczba=”Mniej niż 100″, gdyż już pierwszy warunek będzie spełniony i kolejne nie będą sprawdzane. 
Jeżeli natomiast Ile=100 – otrzymamy w wyniku wartość pustą, gdyż każdy z warunków zwraca wartość False. Chcąc uniknąć takiej sytuacji – konieczne jest zastosowanie jako ostatniego warunku Case Else – czyli w innych przypadkach. 



A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Etykieta w kodzie VBA

Etykieta w kodzie VBA to konkretne miejsce w kodzie VBA. Jest to zawsze jedno słowo (ciąg znaków bez spacji) zakończone dwukropkiem.
Linia z etykietą zawsze zaczyna się od pierwszego znaku w danej linii.

If Warunek Then GoTo Etykieta1
   ’ciag instrukcji A
Etykieta1:
  ’ciag instrukcji B
End If

W tym kodzie VBA jeżeli jest spełniony Warunek, za pomocą wyrażenia GoTo następuje od razu skok wykonywania kodu do znajdującej się tuż pod Etykietą1 ciągu instrukcji B, z pominięciem ciągu instrukcji A.
Linia  z etykietą nie zatrzymuje kodu, nie można tez w niej ustawić punktu przerwania.

Generalnie jednak taki przykład kodu nie jest wzorcowy i wprawdzie działa i to skutecznie, ale raczej, jeżeli są inne możliwości, nie powinno się go stosować.
Za to jest to zdecydowanie najlepsze i standardowo stosowane działanie do obsługi błędów wykonania.


 

Instrukcja VBA: If…Then…

Instrukcja If…Then… w VBA to jedna z funkcji logicznych VBA.
Jest odpowiednikiem funkcji Excela Jeżeli.

If Warunek Then
   warunek jest spełniony
Else
   'warunek nie jest spełniony
End If

W przykładzie powyżej – Warunek musi dawać jednoznaczną odpowiedź typu True (Prawda) lub False (Fałsz) i w zależności od tego wykonuje odpowiednią część kodu.
Instrukcja prosta (choć oczywiście kod przypisany do spełnionego lub nie warunku może być bardzo rozbudowany) i z pewnością bardzo pożyteczna i często wykorzystywana w różnych procedurach.


Kurs Makra i VBA w Excelu dla początkujących