wtorek, 12 listopada 2013

TypeName i TypeOf- przydatne funkcje i operatory

Muszę przyznać, że prowadząc szkolenie z zakresu VBA zazwyczaj brakuje czasu aby zaprezentować i omówić dwie ważne instrukcje języka VBA: funkcję TypeName i operator TypeOf. Cel stosowania obu instrukcji jest podobny- określić rodzaj obiektu lub zmiennej. Sposób stosowania i wynik mogą być zgoła odmienne.

Spójrzmy na różnice i podobieństwa pomiędzy prezentowanymi instrukcjami przez pryzmat przykładów.

1. Sprawdzamy czy bieżące zaznaczenie odpowiada obiektowi określonego typu, tu: obiektowi Range
 

1Debug.Print TypeOf Selection Is Range
2Debug.Print TypeName(Selection) = "Range"

choć w obu wypadkach uzyskamy wyniku True proszę zwrócić uwagę, że wynikiem pracy funkcji TypeName jest ciąg tekstowy. TypeOf można użyć tylko w relacji do obiektu.


Oczywiście możemy dokonać podobnego sprawdzenia w relacji do zmiennej:
1Dim A As Variant
2Set A = Selection
3Debug.Print TypeOf A Is Range
4Debug.Print TypeName(A) = "Range"

Nie mniej tylko instrukcja TypeName pozwala nam określić jakiego typu jest dana zmienna:
1Dim B As Variant
2B = 1
3Debug.Print TypeName(A)    >> Range
4Debug.Print TypeName(B)    >> Integer

2. Jeżeli badana zmienna przyjmuje wartość Nothing operator TypeOf zwróci błąd a funkcja TypeName tekst Nothing:
1Dim C As Variant
2Set C = Nothing
3Debug.Print TypeOf C Is Range    >> błąd wykonania
4Debug.Print TypeName(C)    >> Nothing

3. Operator TypeOf zwraca wartości Prawda/Fałsz, funkcja TypeName zwraca ciąg tekstowy z nazwą typu zmiennej:
1Debug.Print TypeOf A Is Range    >> True
2Debug.Print TypeName(A)    >> Range

4. Operator TypeOf działa szybciej niż funkcja TypeName.

Dodatkowe informacje dot. w/w instrukcji można znaleźć tutaj:
TypeName
TypeOf

Brak komentarzy:

Prześlij komentarz