piątek, 13 grudnia 2013

Unikalne wartości tablicy Array (2/2)

Kontynuując poprzedni wpis o tym samym tytule tym razem trzecia z technik odnajdywania unikalnych elementów kolekcji. Technika ta opiera się o wykorzystanie słownika Dictionary. Wszystkich czytelników, których rozwiązanie to w jakiś sposób zainteresuje odsyłam do tej strony, na której znaleźć można dodatkowe informacje.

Poniższy kod, korzystając z obiektu słownika, zwróci do arkusza unikalne wartości z tablicy. Wewnątrz kodu zawarte zostały dodatkowe informacje i komentarze wyjaśniające cały mechanizm.

01Sub Unikaty_słownik()
02  
03    'tworzymy obiekt zewnętrznej biblioteki _
04     wykorzystując późne wiązanie
05    Dim Słownik As Object
06    Set Słownik = CreateObject("Scripting.Dictionary")
07    
08    Dim Element As Variant
09    Dim arrTablica As Variant
10    Dim i As Long
11 
12    'nasza przykładowa tablica
13    arrTablica = Array("Do", "Re", "Mi", "Do", "Fa", "Sol", _
14                "Re", "Mi", "Fa", "La", "Do", "Si", _
15                "Do", "Re", "Mi", _
16                "fa", "sol", "LA", "sI")
17 
18    'tworzymy słownik
19    For Each Element In arrTablica
20        'wymaga stosowania funkcji konwersji tekstu
21         Słownik(StrConv(Element, vbProperCase)) = 1
22    Next
23 
24    'zwracamy elementy do arkusza
25    For Each Element In Słownik.keys
26        i = i + 1
27        Cells(i, 1) = Element
28    Next
29 
30    'Wynik: Do,Re,Mi,Fa,Sol,La,Si
31 
32End Sub

Na koniec kluczowe pytanie, którą technikę użyć- kolekcję czy słownik. Osobiście nie udzielę jednoznacznej odpowiedzi, ale wskażę na kilka różnic i podobieństw boldem oznaczając lepsze rozwiązanie.

a) Kolekcja jest obiektem wbudowanym języka VBA, Słownik wymaga tworzenia referencji do osobnej biblioteki.

b) Kolekcja wymaga stosowania obsługi błędów czego nie ma w przypadku Słownika i co jest rozwiązaniem (pozornie?) bardziej profesjonalnym.

c) Dodawanie elementu do kolekcji ignoruje wielkość liter, słownik uwzględnia wielkość liter przez co wymaga stosowanie dodatkowych technik VBA.

d) Kolekcja posiada ograniczony zasób metod i właściwości podczas gdy słownik pozostaje bardziej elastyczny pod względem szerszych zastosowań.

Brak komentarzy:

Prześlij komentarz