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:
1Dim ZmiennaA
2Debug.Print IsEmpty(ZmiennaA)  >>True
3 
4ZmiennaA = 100
5Debug.Print IsEmpty(ZmiennaA)  >>False

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:
1Debug.Print IsEmpty(Range("A1"))

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:
1Debug.Print IsEmpty("")        >>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:
1Dim ZmiennaA
2Debug.Print IsNull(ZmiennaA)     >>False
3ZmiennaA = 100
4Debug.Print IsNull(ZmiennaA)     >>False
5ZmiennaA = 0
6Debug.Print IsNull(ZmiennaA)     >>False

I jeszcze test funkcji IsNull dla obszaru typu Range:
1Debug.Print IsEmpty(Range("A1")) >>False

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:
1Dim ZmiennaB
2ZmiennaB = Null
3Debug.Print IsNull(ZmiennaB)     >>True

Brak komentarzy:

Prześlij komentarz