'********************************************************************************************************** ' 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