Licz elementy tablicy


Funkcja liczElementyTablicy korzysta podczas działania z innych nie-wbudowanych funkcji prezentowanych na tej stronie, które w związku z tym również muszą być umieszczone w kodzie projektu dla prawidłowego działania tej funkcji.

Nie uwzględnienie ich w kodzie spowoduje wygenerowanie błędu: Compile error: Sub or Function not defined.

Dodatkowe funkcje wykorzystywane w funkcji liczElementyTablicy zostały wymienione poniżej. Klikając w nazwę każdej z nich przeniesiesz się do podstrony zawierającej jej kod:

Dodając powyższe funkcje, zwróć uwagę czy nie były one już wcześniej wykorzystywane w Twoim kodzie. Obecność w jednym projekcie VBA dwóch funkcji publicznych o identycznych nazwach spowoduje wygenerowanie błędu kompilacji o treści: Compile error: Ambiguous name detected: nazwa_funkcji.

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
51
52
53
54
55
56
'**********************************************************************************************************
' 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