Kontynuując omawianie funkcji informacyjnych (z grupy VBA) przedstawię na zakończenie dwie funkcje:
IsMissing, IsError.
1. Funkcja
IsMissing ma
swoje szczególne zastosowanie w tworzeniu własnych funkcji użytkownika.
Wykorzystamy ją wtedy gdy dany parametr funkcji jest opcjonalny.
Wewnątrz funkcji zapewne będziemy chcieli przetestować czy użytkownik
podał ten parametr czy też go pominął.
Wyobraźmy sobie
funkcję, która standardowo liczy pole kwadratu, a jeżeli użytkownik poda
długość dwóch boków to funkcja obliczy pole prostokąta przyjmując jako
wymiary boków figury kolejne podane argumenty.
1 | Function PoleKwadratuProstokąta(długośćA, Optional DługośćB) |
3 | If IsMissing(DługośćB) Then |
4 | PoleKwadratuProstokąta = długośćA * długośćA |
6 | PoleKwadratuProstokąta = długośćA * DługośćB |
W powyższym przykładzie dzięki funkcji
IsMissing sprawdzamy czy użytkownik podał drugi z argumentów i określamy jaki wzór zostanie zastosowany do obliczeń.
Funkcja
IsMissing nie
ma szczególnego zastosowania w innych przypadkach. Sprawdzenie pustych
komórek, nieprzypisanych zmiennych, pustych ciągów tekstowych
każdorazowo zwraca wartość
False jak dla poniższych przykładów:
2 | Debug.Print IsMissing(ZmiennaA) |
3 | Debug.Print IsMissing( "" ) |
4 | Debug.Print IsMissing(Range( "A1" )) |
2. Funkcja
IsError zwraca wartość
True w
sytuacji gdy testowana wartość lub zmienna zwracają błąd. Funkcja ta
znajdzie swoje główne zastosowanie w kilku przypadkach- w sytuacji gdy
testujemy wartość zwracaną przez naszą funkcję, w sytuacji gdy
sprawdzamy czy dana komórka zawiera błąd (bład formuły), w sytuacji
testowania wartości zwracanych przez funkcje arkuszowe wywołanych jako
rozwinięcie obiektu
Application. Przyjrzyjmy się przykładom i komentarzom w poniższym kodzie:
3 | Debug.Print IsError(CVErr(6)) |
7 | Debug.Print IsError(Range( "A1" )) |
8 | Debug.Print IsError(Range( "A2" )) |
9 | Debug.Print IsError(Application.Sum(Range( "A1:A10" ))) |
Uwaga! Poniższe wywołanie zwróci błąd kompilacji, funkcja
IsError nie będzie skuteczna w tym aspekcie. W celu 'przechwycenia' tego błędu niezbędne będzie zastosowanie procedury obsługi błędów.
1 | Debug.Print IsError(WorksheetFunction.Sum(Range( "A1:A10" ))) |
Brak komentarzy:
Prześlij komentarz