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