Operacje na ciągach znaków w VBA

Stronę tą wyświetlono już: 237 razy

Łączenie dwóch ciągów znaków

Do łączenia dwóch ciągów znaków można posłużyć się operatorem dodawania:

Listing 1
  1. Dim str as String
  2. str = "tekst " + "do złączenia"

Łączenie dwóch dowolnych typów podstawowych w ciąg znaków

Wcześniej omawianym operatorem można było łączyć tylko dwa ciągi znaków, natomiast za pomocą operatora & w VBA można połączyć dwie dowolne zmienne typu podstawowego w jeden ciąg znaków:

Listing 2
  1. Dim str as String
  2. str = "Liczba " & 10

Konwersja dowolnego typu podstawowego do typu String

Do konwersji na String służy funkcja CStr.

Listing 3
  1. Dim str as String
  2. str = "Liczba " + CStr(10)

Konwersja tekstu na liczbę

Do konwersji tekstu na liczbę służą funkcje omówione na stronie Programowanie → Podstawy VBA → Funkcje konwersji typów zmiennych w VBA.

Długość tekstu

Długość tekstu przechowywanego przez zmienną typu String można uzyskać za pomocą funkcji Len:

Listing 4
  1. Dim str as String
  2. str = "Jakiś tam tekst"
  3. MsgBox Len(str)

Sprawdzanie, czy tekst zawiera liczbę

Do sprawdzenia, czy tekst zawiera liczbę służy funkcja IsNumeric, oto przykład jej użycia:

Listing 5
  1. MsgBox IsNumeric("10")

Wycinanie fragmentu tekstu od lewej strony

Do wycięcia fragmentu tekstu od lewej strony służy funkcja Left, która przyjmuje dwa argumenty: tekst do przycięcia i długość wycinanego tekstu. Oto przykład:

Listing 6
  1. Dim str as String
  2. str = "Jakiś tam tekst"
  3. MsgBox Left(str, 5)

Wycinanie fragmentu tekstu od prawej strony

Do wycięcia fragmentu tekstu od prawej strony służy funkcja Right, która przyjmuje dwa argumenty: tekst do przycięcia i długość wycinanego tekstu. Oto przykład:

Listing 7
  1. Dim str as String
  2. str = "Jakiś tam tekst"
  3. MsgBox Right(str, 5)

Wycinanie fragmentu tekstu z środka

Do wycięcia fragmentu tekstu z jego środka służy funkcja Mid, która przyjmuje trzy argumenty: tekst do przycięcia, położenie pierwszego znaku (licząc od lewej) i długość wycinanego ciągu. Oto przykład:

Listing 8
  1. Dim str as String
  2. str = "Jakiś tam tekst"
  3. MsgBox Mid(str, 6, 3)

Znajdowanie pierwszego miejsca wystąpienia tekstu w tekście

Do tego typu operacji służy funkcja InStr, która może przyjmować różną liczbę argumentów:

Listing 9
  1. InStr([start, ]string1, string2[, compare])

Jeżeli wartość argumentu pierwszego nie zostanie podana, porównywanie rozpoczyna się od początku tekstu, dwa kolejne argumenty to przeszukiwany tekst i poszukiwany tekst, ostatni to metoda porównywania tekstu. Funkcja zwraca położenie tekstu, jeżeli nie znajdzie wystąpienia zwraca 0.

Listing 10
  1. MsgBox InStr(2, "10 10 20 10", "10")

Powyższy kod w oknie dialogowym wyświetli wartość 4.

Znajdowanie i zastępowanie tekstu w tekście

Do znajdowania i zamiany tekstu w tekście służy funkcja Replace, która może przyjmować różną liczbę argumentów:

Listing 11
  1. Replace(expression, find, replace[, start[, count[, compare]]])

Pierwszy argument funkcji to tekst, w którym wyszukiwany jest ciąg znaków podany w drugim argumencie funkcji, trzeci argument to tekst do zamiany, czwarty (opcjonalny) to początek wyszukiwania, piąty określa liczba wykonanych podmian, ostatni to metoda porównywania napisów.

Komentarze