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
1 | Debug.Print TypeOf Selection Is Range |
2 | Debug.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:
1 | Dim A As Variant |
2 | Set A = Selection |
3 | Debug.Print TypeOf A Is Range |
4 | Debug.Print TypeName(A) = "Range" |
Nie mniej tylko instrukcja TypeName pozwala nam określić jakiego typu jest dana zmienna:
1 | Dim B As Variant |
2 | B = 1 |
3 | Debug.Print TypeName(A) >> Range |
4 | Debug.Print TypeName(B) >> Integer |
2. Jeżeli badana zmienna przyjmuje wartość Nothing operator TypeOf zwróci błąd a funkcja TypeName tekst Nothing:
1 | Dim C As Variant |
2 | Set C = Nothing |
3 | Debug.Print TypeOf C Is Range >> błąd wykonania |
4 | Debug.Print TypeName(C) >> Nothing |
3. Operator TypeOf zwraca wartości Prawda/Fałsz, funkcja TypeName zwraca ciąg tekstowy z nazwą typu zmiennej:
1 | Debug.Print TypeOf A Is Range >> True |
2 | Debug.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