Start > Kursy on-line > Excel - makra i VBA

Excel - makra i VBA


Funkcje tekstowe

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.