Połącz kolekcje


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:                polaczKolekcje
' Autor:                mielk | 2012-03-12
'
' Opis:                 Funkcja łączy do 30 kolekcji w jedną większą kolekcję.
'
' Argumenty:
'   kolekcje()          Kolekcje, które mają zostać połączone w większą kolekcję.
'                       Jest to parametr typu ParamArray, a więc możliwe jest podanie dowolnej liczby
'                       kolekcji wejściowych (maksymalnie 30).
'                       Wszystkie parametry wejściowe nie będące kolekcjami są ignorowane.
'
' Zawiera:
'   Collection          Kolekcja zawierająca wszystkie elementy z podanych tablic wejściowych.
'
'                       Elementy w kolekcji wynikowej mogą się duplikować.
'
'                       Elementy dodawane są w do kolekcji bez klucza, nawet jeżeli w kolekcji źródłowej
'                       podane były z kluczem.
'
'
' --- Changes log -----------------------------------------------------------------------------------------
' 2013-04-26    mielk       Utworzenie funkcji.
'**********************************************************************************************************
Public Function polaczKolekcje(ParamArray kolekcje() As Variant) As VBA.Collection
    Const NAZWA_METODY As String = "polaczKolekcje"
    '------------------------------------------------------------------------------------------------------
    Dim kolekcja As Variant
    Dim element As Variant
    '------------------------------------------------------------------------------------------------------

    'Zainicjuj kolekcję wynikową.
    Set polaczKolekcje = New VBA.Collection


    'Przejdź przez wszystkie kolekcje źródłowe. ---------------------------------------------------------|
    For Each kolekcja In kolekcje                                                                       '|
                                                                                                        '|
        'Check if an element currently processed in this loop is a collection. ----------------------|  '|
        If TypeOf kolekcja Is Collection Then                                                       '|  '|
                                                                                                    '|  '|
            'If [kolekcja] is a collection, iterate through all its -----------------------------|  '|  '|
            'elements and add them to the result Collection [polaczKolekcje].                   '|  '|  '|
            For Each element In kolekcja                                                        '|  '|  '|
                Call polaczKolekcje.add(element)                                                '|  '|  '|
            Next element                                                                        '|  '|  '|
            '------------------------------------------------------------------------------------|  '|  '|
                                                                                                    '|  '|
        End If                                                                                      '|  '|
        '--------------------------------------------------------------------------------------------|  '|
                                                                                                        '|
    Next kolekcja                                                                                       '|
    '----------------------------------------------------------------------------------------------------|


End Function