1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'**********************************************************************************************************
' Nazwa: czyZdefiniowanaTablica
' Autor: mielk | 2012-03-27
'
' Opis: Funkcja sprawdzająca czy podany parametr jest niepustą tablicą.
'
' Argumenty:
' arr Sprawdzany parametr.
'
' Zwraca:
' Boolean True - jeżeli parametr [arr] jest tablicą, której wymiary zostały już zadeklarowane.
' False - jeżeli parametr [arr] nie jest tablicą lub jest tablicą dynamiczną, której wymiary
' nie zostały jeszcze zdefiniowane.
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2012-03-27 mielk Stworzenie funkcji.
'**********************************************************************************************************
Public Function czyZdefiniowanaTablica(arr As Variant) As Boolean
Const NAZWA_METODY As String = "czyZdefiniowanaTablica"
'------------------------------------------------------------------------------------------------------
Dim gornaGranica As Long
Dim dolnaGranica As Long
'------------------------------------------------------------------------------------------------------
'Funkcja próbuje przypisać do zmiennych dolnaGranica i gornaGranica dolną i górną granicę podanego
'parametru.
'Jeżeli podany argument nie jest tablicą lub jest dynamiczną tablicą bez zadeklarowanych jeszcze
'wymiarów, wygenerowany zostanie błąd, który spowoduje przeniesienie kodu do labelu NieTablica,
'co z kolei sprawi, że cała funkcja zwróci wartość False.
On Error GoTo NieTablica
gornaGranica = UBound(arr, 1)
dolnaGranica = LBound(arr, 1)
'W niektórych przypadkach pobranie właściwości LBound i UBound będzie możliwe nawet jeśli podany
'argument jest pustą tablicą (np. dla tablic podanych jako parametr typu ParamArray). W takiej
'sytuacji wartość UBound będzie jednak mniejsza niż wartość LBound, dlatego poniższe sprawdzenie
'pozwoli rozpoznać takie tablice i zwrócić dla nich wartość False.
czyZdefiniowanaTablica = (gornaGranica >= dolnaGranica)
'==========================================================================================================
PunktWyjscia:
Exit Function
'----------------------------------------------------------------------------------------------------------
NieTablica:
GoTo PunktWyjscia
End Function