Funkcja Split

Funkcja Split to jedna z funkcji tekstowych VBA. W wyniku jej działania otrzymujemy tablicę wartości będących fragmentami wyrażenia tekstowego, oddzielonych określonym separatorem.
Argumenty funkcji to:

    • Expression– argument obowiązkowy. Ciąg tekstowy do rozdzielenia
    • Delimiter– argument opcjonalny. Znak rozdzielający. Wartość domyślna to spacja (” “).
    • Limit as Long– argument opcjonalny. Wyznacza kolejny numer podciągu tekstowego. Wartość domyślna =-1 – zwraca wszystkie kolejne ciągi.
    • Compare – sposób porównywania tekstów:
      • vbBinaryCompare – binarne wyszukiwanie znaków (czyli wielkość liter ma znaczenie). Opcja domyślna
      • vbDatabaseCompare – wyszukiwanie zgodne z ustawieniami bazy danych/modułu
      • vbTexCompare – tekstowe wyszukiwanie znaków (czyli wielkość liter nie ma znaczenia)

W uproszczeniu działanie funkcji Split polega na rozbiciu łańcucha  tekstowego na mniejsze ciągi znaków.
Np.  wyrażenie tekstowe “abc|123|xyz” za pomocą funkcji Split można wykorzystać do otrzymania ciągów:
abc
123
xyz
Deliminatorem jest w tym przypadku znak “|“.

Przykładowy kod może wyglądać tak:

Public Sub RozdzielTekst()
Dim a
Dim b
Dim c
Dim ROZ As Variant
Dim JTekst As String
JTekst=”abc|123|xyz”
ROZ=SPLIT(JTekst,”|”)
a=ROZ(0)
b=ROZ(1)
c=ROZ(2)
End Sub

Przy stosowaniu funkcji Split w procedurze czy funkcji należy pamiętać o:

    • separatorem powinien być znak rzadko wykorzystywany, żeby nie dochodziło do nieprawidłowego podziału. Najlepiej wykorzystywać tu znak |.
    • zmienna będąca wynikiem działania funkcji (w przykładzie zmienna ROZ) musi być zadeklarowana jako typ Variant
    • poszczególne elementy wyniku działania funkcji są numerowane od zera
    • każdy element wynikowy jest tekstem. Jeżeli jest to liczba zapisana jako tekst – musimy dokonać jej konwersji.
      W przykładzie dla drugiego elementu tablicy konieczne jest więc zastosowanie b=CInt(ROZ(1)) lub CLng(ROZ(1))

Funkcja Split jest często stosowana w praktyce. Ja najczęściej wykorzystuję ją do przekazywania kilku różnych wartości pomiędzy formularzami lub raportami. Zamykając jeden obiekt, tworzę ciąg, który w formie argumentu OpenArgs w docmd trafia do obiektu, w którym za pomocą właśnie Split “odzyskuję” poszczególne wartości.


Kurs Access 2010 esencja

Leave a Reply