Funkcja czyJestWTablicy
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 czyJestWTablicy 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
'**********************************************************************************************************
' Nazwa: czyJestWTablicy
' Autor: mielk | 2011-07-19
'
' Opis: Funkcja sprawdzająca czy podany tekst bazowy znajduje się w danej tablicy.
'
' Argumenty:
' wartosc Tekst bazowy, który będzie poszukiwany w tablicy.
' tablica Tablica wartości tekstowych, do której będzie porównywany podany tekst bazowy.
' Parametr [tablica] musi być tablicą jednowymiarową, która zawiera tylko wartości
' typów prostych (dopuszczalne są wartości innego typu niż String), nie może zawierać
' obiektów (w takiej sytuacji zwrócony zostanie wyjątek ObiektyWTablicy).
' wielkoscZnakowMaZnaczenie
' Argument opcjonalny typu Boolean.
' Decyduje o tym, czy przy sprawdzaniu zgodności początku tekstu bazowego z podanym
' ciągiem znaków, funkcja bierze pod uwagę wielkość liter.
' Domyślne ustawienie tego parametru to False, co oznacza, że funkcja nie rozróżnia
' wielkości znaków.
'
' Zwraca:
' Boolean True - jeżeli tekst bazowy znajduje się w podanej tablicy.
' False - jeżeli żaden z elementów tablicy nie jest równy podanemu tekstowi bazowemu.
'
' Wyjątki:
' NieTablica Zwracany, kiedy przekazany do funkcji argument wejściowy [tablica] nie
' jest tablicą lub jest tablicą mającą więcej niż jeden wymiar.
' ObiektyWTablicy Zwracany w sytuacji, gdy przekazana do funkcji tablica oprócz wartości
' typów prostych, zawiera jakikolwiek obiekt.
'
'
' --- Zmiany ----------------------------------------------------------------------------------------------
' 2011-07-19 mielk Utworzenie funkcji.
'**********************************************************************************************************
Public Function czyJestWTablicy(wartosc As String, tablica As Variant, _
Optional wielkoscZnakowMaZnaczenie As Boolean = False) As Boolean
Const NAZWA_METODY As String = "startsWith"
Dim SEPARATOR As String: SEPARATOR = VBA.Chr(0)
'------------------------------------------------------------------------------------------------------
Dim tempStr As String
Dim uMetodaPorownania As VBA.VbCompareMethod
'------------------------------------------------------------------------------------------------------
'Funkcja sprawdza czy podany argument [tablica] jest tablicą 1D. ------------------------------------|
If liczWymiary(tablica) <> 1 Then GoTo NieTablica '|
'----------------------------------------------------------------------------------------------------|
'Zamienia podany przez użytkownika parametr typu Boolean [wielkoscZnakowMaZnaczenie] na jedną ze ----|
'stałych enumeracji [VbCompareMethod]. '|
If wielkoscZnakowMaZnaczenie Then '|
uMetodaPorownania = VBA.vbBinaryCompare '|
Else '|
uMetodaPorownania = VBA.vbTextCompare '|
End If '|
'----------------------------------------------------------------------------------------------------|
'Funkcja próbuje przekonwertować podaną tablicę na ciąg tekstowy przy użyciu wbudowanej funkcji -----|
'VBA Join. Jeżeli wśród elementów tablic jest jakiś obiekt, zostanie wygenerowany błąd '|
'ObiektyWTablicy. '|
On Error GoTo ObiektyWTablicy '|
tempStr = SEPARATOR & VBA.Join(tablica, SEPARATOR) & SEPARATOR '|
On Error GoTo 0 '|
'----------------------------------------------------------------------------------------------------|
czyJestWTablicy = VBA.InStr(1, tempStr, SEPARATOR & wartosc & SEPARATOR, uMetodaPorownania)
'==========================================================================================================
PunktWyjscia:
Exit Function
'-----------------------------------------------
NieTablica:
'Obsługa błędów dla przypadku, kiedy podany argument [tablica] nie jest tablicą lub posiada więcej niż
'jeden wymiar.
GoTo PunktWyjscia
ObiektyWTablicy:
'Obsługa błędów dla przypadku, jeżeli w tablicy [tablica] znajduje się jakikolwiek obiekt, który nie
'może zostać przekonwertowany na typ String.
GoTo PunktWyjscia
End Function