zpět na výpis    domů » excel » Textové funkce Len(), InStr() a Left() ve VBA

Textové funkce Len(), InStr() a Left() ve VBA

Publikováno: 7.7.2017

Textové funkce Len(), InStr() a Left() ve VBA

Používání textových funkcí je v MS Excel poměrně frekventovaná záležitost. Jazyk VBA disponuje funkcemi, které vrací například délku textového řetězce, pozici hledaného znaku v řetězci a požadovaný počet znaků z řetězce.

Konkrétně představím funkce Len(), InStr() a Left(), které vykonávají výše uvedené operace.

Délka textového řetězce

Délku textového řetězce zajistíte pomocí funkce Len(). Funkce vrací počet znaků řetězce.

Len(řetězec)

V české lokalizaci této funkce odpovídá excelovská funkce DÉLKA().

Funkce Len() #1

Následující procedura vypíše v okně Editoru VBA počet znaků řetězce "Ahoj světe!". Výpis v okně Immediate zajistí příkaz Debug.Print. Okno Immediate se používá pro ladění kódu.

Textová funkce VBA Len() a příkaz Debug.print

Funkce Len() #2

Funkci Len() lze použít také v případě, kdy potřebujete zjistit, zda buňka má nějaký obsah. Na obsah buňky můžete navázat nějakou operaci.

Například následující procedura otestuje obsah buněk v rozsahu A1:A10. Je-li buňka neprázdná, procedura zabarví pozadí buňky zelenou barvou pomocí Interior.Color. Jinak zabarví pozadí buňky žlutou barvou.

Sub Obsah_bunky()

Dim i As Byte

Range("A1").Select

For i = 1 to 10
  If Len(Cells(i, 1)) > 0 Then
      Cells(i, 1).Interior.Color = RGB(0, 255, 0)
  Else
      Cells(i, 1).Interior.Color = RGB(255, 255, 0)
  End If

Next i

End Sub

Textové funkce ve VBA

Funkce Len() #3

Další procedura vyhledá prázdné buňky v tabulce. První sloupec tabulky obsahuje ID zákazníka a druhý sloupec obsahuje Název zákazníka. Tabulka není udržovaná a některé názvy zákazníků nejsou k dispozici. Cílem procedury je vyhledat prázdné buňky ve sloupci Název zákazníka a do sousední buňky vložit text "n/a" (not available) plus vypsat počet prázdných buněk v dialogovém okně.

deklarace proměnných
Dim i As Long, posledniradek As Long
Dim pocet As Long

počet řádků ve sloupci A a nastaveni proměnné POCET
posledniradek = Cells(Rows.Count, "A").End(xlUp).Row
pocet = 0

výpis hlášky "ok" nebo "n/a"
For i = 2 To posledniradek
  If Len(Cells(i, 2)) > 0 Then
    Cells(i, 3).Offset() = "ok"
  Else
    Cells(i, 3).Offset() = "n/a"
    pocet = pocet + 1
  End If
Next i

vypis počtu prázdných buněk v dialogovém okně
MsgBox pocet

End Sub

Následující obrázek obsahuje výsledek procedury.

VBA funkce Len() a počet prázdných buněk

Úprava textových řetězců

Nyní přichází na řadu funkce, které prochází textové řetězce a vrací pořadí hledané znaku a požadovaný počet znaků od počátku řetězce. První textovou funkcí je funkce InStr(), která vrací pozici hledaného znaku v textovém řetězci.

InStr(řetězec, hledaný_znak)

Další funkcí je funkce Left(), které vrací specifikovaný počet znaků od počátku řetězce, tj. zleva.

Left(řetězec, počet_znaků)

Analogické funkce jsou funkce Right() a Mid(), které vrací počet znaků od konce řetězce (zprava) a vybranou část uprostřed řetězce.

Funkce InStr() a Left()

Poslední procedura tohoto příspěvku vyhledá první mezeru v textovém řetězci a vrátí první slovo zleva.

Sub Uprava_retezce()

deklarace proměnných
Dim i As Long, posledniradek As Long, pozice As Long
Dim zleva As String

zjištění počtu řádků
posledniradek = Cells(Rows.Count, "A").End(xlUp).Row

cyklus vyhledá pozici první mezery ve sloupci A a vrátí první slovo zleva
For i = 1 To posledniradek
  pozice = InStr(Cells(i, 1), " ")
  zleva = Left(Cells(i, 1), pozice)
  Cells(i, 2).Value = zleva
Next i

End Sub

Následující obrázek obsahuje výsledek vykonané procedury.

Textové funkce VBA InStr() a Left()

Líbil se vám článek? A chcete se vědět o každém dalším?

Sledujte:

Nahoru