Zwróć klucze obiektu Dictionary


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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'**********************************************************************************************************
' Nazwa:                kluczeSlownika
' Autor:                mielk | 2013-04-10
'
' Opis:                 Zwraca zestaw kluczy podanego obiektu typu Dictionary jako jednowymiarowa tablica.
'
' Argumenty:
'   dict                Obiekt typu Dictionary, któego klucze mają zostać zwrócone.
'
' Zwraca:
'   Variant()           Tablica kluczy podanego obiektu typu Dictionary.
'
'
' Wyjątki:
'   NiedozwolonyTypDanych           Wywoływany, kiedy podany parametr nie jest obiektem typu Dictionary.
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2013-04-10        mielk       Utworzenie funkcji
'**********************************************************************************************************
Public Function kluczeSlownika(dict As Variant) As Variant()
    Const NAZWA_METODY As String = "kluczeSlownika"
    '------------------------------------------------------------------------------------------------------
    Const DICTIONARY As String = "Dictionary"
    '------------------------------------------------------------------------------------------------------
    Dim varKlucze As Variant
    Dim tablica() As Variant
    Dim lngElement As Long
    '------------------------------------------------------------------------------------------------------


    'Sprawdź czy podaby argument wejściowy jest obiektem typu Dictionary.
    If VBA.StrComp(VBA.TypeName(dict), DICTIONARY, vbTextCompare) Then GoTo NiedozwolonyTypDanych


    'Jeżeli podany słownik jest pusty, zwrócona zostanie pusta tablica. W takiej sytuacji nie ma więc sensu
    'przeprowadzać żadnych dodatkowych operacji.
    If dict.Count Then

        'Zmień rozmiar tablicy wynikowej [tablica], żeby pomieściła wszystkie klucze z podanego
        'obiektu typu Dictionary.
        ReDim tablica(1 To dict.Count)
        For Each varKlucze In dict.keys
            lngElement = lngElement + 1

            If VBA.IsObject(varKlucze) Then
                Set tablica(lngElement) = varKlucze
            Else
                tablica(lngElement) = varKlucze
            End If

        Next varKlucze

    End If


    'Przypisz tablicę z kluczami do zmiennej będącej wynikiem funkcji.
    kluczeSlownika = tablica


'==========================================================================================================
PunktWyjscia:
    Exit Function

'----------------------------------------------------------------------------------------------------------
NiedozwolonyTypDanych:
    'Obsługa błędów dla sytuacji, kiedy podany parametr nie jest obiektem typu Dictionary.

    GoTo PunktWyjscia

End Function