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.
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. 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:
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.
piątek, 21 czerwca 2013
poniedziałek, 17 czerwca 2013
Funkcje informacyjne, część 3/5- funkcje VBA
Kontynuując temat związany z funkcjami informacyjnymi dziś prześledzę wykorzystanie dwóch kolejnych: IsEmpty, IsNull.
1. Funkcja IsEmpty zwróci wartość True gdy zmienna testowana przez funkcję nie została zainicjowana, a więc nie przypisano jej żadnej wartości. Oto przykład wraz ze zwracanymi wynikami:
Co jednak ważne- choć pomoc VBA wspomina o możliwości testowania zmiennych z wykorzystaniem funkcji IsEmpty możemy także zapytać np. o zawartość komórki:
jeżeli komórka A1 będzie pusta w wyniku otrzymamy True, jeżeli jednak w komórce A1 będzie dowolna wartość (tekst, liczba, data, itp). otrzymamy w wyniku wartość False.
I jeszcze ważna ciekawostka. Poniższe zapytanie o pusty ciąg tekstu zwróci wartość False:
2. Funkcja IsNull nie jest pytaniem czy dana zmienna przechowuje 0 lecz jest pytaniem, czy dana zmienna zwraca wynik Null. Każde z 3 poniższych zapytań zwróci więc wartość False gdyż w żadnym wypadku nie mamy do czynienia z wartością Null:
I jeszcze test funkcji IsNull dla obszaru typu Range:
Niezależnie czy komórka zawiera jakąś wartość czy jest pusta powyższe zapytanie zwróci False.
Kiedy więc funkcja IsEmpty zwróci wartość True? W sytuacji następującego zapytania:
1. Funkcja IsEmpty zwróci wartość True gdy zmienna testowana przez funkcję nie została zainicjowana, a więc nie przypisano jej żadnej wartości. Oto przykład wraz ze zwracanymi wynikami:
Co jednak ważne- choć pomoc VBA wspomina o możliwości testowania zmiennych z wykorzystaniem funkcji IsEmpty możemy także zapytać np. o zawartość komórki:
jeżeli komórka A1 będzie pusta w wyniku otrzymamy True, jeżeli jednak w komórce A1 będzie dowolna wartość (tekst, liczba, data, itp). otrzymamy w wyniku wartość False.
I jeszcze ważna ciekawostka. Poniższe zapytanie o pusty ciąg tekstu zwróci wartość False:
2. Funkcja IsNull nie jest pytaniem czy dana zmienna przechowuje 0 lecz jest pytaniem, czy dana zmienna zwraca wynik Null. Każde z 3 poniższych zapytań zwróci więc wartość False gdyż w żadnym wypadku nie mamy do czynienia z wartością Null:
I jeszcze test funkcji IsNull dla obszaru typu Range:
Niezależnie czy komórka zawiera jakąś wartość czy jest pusta powyższe zapytanie zwróci False.
Kiedy więc funkcja IsEmpty zwróci wartość True? W sytuacji następującego zapytania:
Subskrybuj:
Posty (Atom)