'********************************************************************************************************** ' Nazwa: liczElementyTablicy ' Autor: Artur Krawczyński | 2014-11-17 ' ' Opis: Funkcja zwracająca liczbę elementów podanej tablicy. ' ' Argumenty: ' tablica Tablica, dla której zwrócona ma być liczba elementów. ' ' Zwraca: ' Long Liczba elementów danej tablicy VBA. ' ' ' Wyjątki: ' NieTablica Zwracany, jeżeli przekazany do funkcji argument nie jest tablicą. ' ' ' --- Zmiany ---------------------------------------------------------------------------------------------- ' 2014-11-17 Artur Krawczyński Utworzenie funkcji '********************************************************************************************************** Public Function liczElementyTablicy(tablica As Variant) As Long Const NAZWA_METODY As String = "liczElementyTablicy" '------------------------------------------------------------------------------------------------------ Dim bWymiary As Byte Dim iWymiar As Byte '------------------------------------------------------------------------------------------------------ 'Sprawdza czy podany do funkcji argument jest tablicą. Jeśli nie, wykonywanie kodu przenoszone jest do 'labelu NieTablica. If Not VBA.IsArray(tablica) Then GoTo NieTablica 'Funkcja sprawdza czy podana tablica jest zadeklarowana (a więc czy ma przynajmniej jeden wymiar). bWymiary = liczWymiary(tablica) 'Jeżeli podana tablica jest zadeklarowana, zmienna wynikowa jest inicjalizowana z wartością 1. If bWymiary Then liczElementyTablicy = 1 'Dla każdego wymiaru mnożymy dotychczasowy wynik funkcji przez rozmiar tego wymiaru. For iWymiar = 1 To bWymiary liczElementyTablicy = liczElementyTablicy * (UBound(tablica, iWymiar) - _ LBound(tablica, iWymiar) + 1) Next iWymiar '========================================================================================================== PunktWyjscia: Exit Function '---------------------------------------------------------------------------------------------------------- NieTablica: 'Obsługa błędów dla sytuacji, kiedy podany parametr wejściowy nie jest tablicą. GoTo PunktWyjscia End Function '********************************************************************************************************** ' Nazwa: liczWymiary ' Autor: mielk | 2012-03-03 ' ' Opis: Funkcja zwraca liczbę wymiarów podanej tablicy VBA. ' ' Argumenty: ' tablica Tablica, której liczba wymiarów ma zostać zwrócona. ' ' Zwraca: ' Integer Liczba wymiarów podanej tablicy VBA. ' Jeżeli podana wartość nie jest tablicą lub jest zadeklarowana jako tablica ' dynamiczna, ale nie przypisano jeszcze do niej liczby wymiarów, zwracana ' jest wartość 0. ' ' ' --- Zmiany ---------------------------------------------------------------------------------------------- ' 2012-03-03 mielk Utworzenie funkcji ' 2014-06-15 mielk Zwracany typ zmieniony na Integer, żeby umożliwić zwracanie wartości -1, ' jeżeli podany parametr nie jest w ogóle tablicą. '********************************************************************************************************** Public Function liczWymiary(tablica As Variant) As Integer Const NAZWA_METODY As String = "liczWymiary" '------------------------------------------------------------------------------------------------------ Dim granica As Long '------------------------------------------------------------------------------------------------------ If VBA.IsArray(tablica) Then On Error GoTo NieistniejacyWymiar Do granica = UBound(tablica, liczWymiary + 1) liczWymiary = liczWymiary + 1 Loop Else liczWymiary = -1 End If '---------------------------------------------------------------------------------------------------------- NieistniejacyWymiar: End Function