Załącznik z przykładami dla tego rozdziału znajduje się w tym miejscu.
Kolejne rozdziały będą opisywać najważniejsze i najczęściej używane funkcje wbudowane w język programowania VBA. Zaczniemy od bardzo często używanych funkcji tekstowych, służących do różnego rodzaju operacji na łańcuchach znaków.
W tym celu przygotujemy krótką procedurą, która wykonuje następujące czynności dla tekstu umieszczonego w komórce A1 Arkusza1:
- obliczy długość tego tekstu,
- zwróci pierwszych 10 znaków od lewej,
- zwróci pierwsze 10 znaków od prawej,
- zwróci 10 znaków od lewej, począwszy od 5-go,
- zamieni myślnik na średnik (o ile istnieje),
- podzieli tekst na fragmenty rozdzielone myślnikiem i wklei te elementy w kolejne kolumny arkusza
Nasza procedura będzie wyglądała następująco:
Sub fun_tekst()
Dim tablica() As String
Dim licznik As Byte
Cells(3, 2) = Len(Cells(1, 1))
Cells(4, 2) = Left(Cells(1, 1), 10)
Cells(5, 2) = Right(Cells(1, 1), 10)
Cells(6, 2) = Mid(Cells(1, 1), 5, 10)
Cells(7, 2) = Replace(Cells(1, 1), "-", ";")
tablica = Split(Cells(1, 1), "-")
licznik = 0
For Each Item In tablica
Cells(8, licznik + 2) = tablica(licznik)
licznik = licznik + 1
Next Item
End Sub
Omówmy teraz kolejne jej etapy w celu przybliżenia określonych czynności i przedstawienia funkcji, których dotyczy ten rozdział:- deklaracja zmiennych - zauważmy, że zmienna tablica jest zakończona nawiasem - w ten sposób deklarujemy zmienne tablicowe. Jako że nie podaliśmy w nawiasie żadnej wartości, tablica będzie dynamiczna - będzie zawierać tyle elementów, ile do niej wstawimy
- określenie długości łańcucha - wykorzystujemy w tym celu funkcję Len, której jedynym argumentem jest łańcuch (u nas podany jako odwołanie do komórki A1, która go zawiera)
- wybranie pierwszych 10 znaków od lewej - służy do tego funkcja Left, której argumentami są: łańcuch oraz liczba znaków, jaką chcemy uzyskać
- wybranie pierwszych 10 znaków od prawej - analogicznie jak poprzednio tylko funkcja nazywa się Right
- wybranie 10 znaków, rozpocząwszy od piątego z lewej - wykorzystujemy funkcję Mid - pierwszym argumentem jest tekst, potem podajemy początkowy znak, od którego interesuje nas łańcuch oraz liczbę wierszy do "wyjęcia"
- zamiana myślnika na średnik - wykorzystanie funkcji Replace, gdzie mamy najpierw tekst, a następnie szukany tekst (u nas "-") i tekst na jaki szukany tekst będzie zamieniony (u nas ";")
- podział tekstu na fragmenty - z użyciem funkcji Split. Zauważmy, że nie trzeba zastanawiać się ile elementów będzie miała dana tablica, program wykona tę czynność za nas: wystarczy do zmiennej tablicowej przypisać wynik wykonania wspomnianej funkcji, której argumentami są: dzielony tekst oraz znak podziału (u nas "-").
Niektóre powyższe funkcje zawierają także pewne argumenty opcjonalne, które w naszych rozważaniach pomijamy (jako, że są one rzadko używane) - w przypadku, gdyby czytelnik był nimi jednak zainteresowany, odsyłam go do systemu pomocy.
W ostatniej części procedury, przypisujemy jedynie do zmiennej licznik wartość zero a następnie używamy automatycznej pętli, dla wylistowania zawartości tablicy w kolejnych komórkach ósmego wiersza. Pętla w kształcie: For Each Item" pozwala nam na przejście przez każdy element jednowymiarowej tablicy, bez zliczania ilości rekordów. Dodatkowo pełni funkcję obsługi błędu w przypadku, jeśli tablica była by pusta (procedura nie zwróci błędu) gdyż jeśli by tak było, to po prostu polecenia w niej zawarte nie zostaną wykonane ani razu.