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

VBA: textové funkce Len(), InStr() a Left()

Publikováno: 7.7.2017

VBA: textové funkce Len(), InStr() a Left()

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

Délka textového řetězce

Délka textového řetězce se zajišťuje pomocí funkce Len(). Funkce vrací počet znaků řetězce.

Len(řetězec)

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

Použití 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

Použití funkce Len() #2

Funkci Len() lze použít také v případě, kdy je potřeba zjistit, zda je buňka prázdná či nikoliv. Je-li v buňce jakýkoliv znak (zabalen do uvozovek) nebo číslo, vrátí funkce počet znaků. Je-li argumentem funkce prázdná buňka nebo neexistující proměnná, je výsledkem nula.

Následující procedura otestuje obsah buňky A1. Je-li neprázdná, zabarví pozadí buňky na zeleno pomocí Interior.Color. Jinak zabarví pozadí buňky červenou barvou.

Option Explicit

Sub Test()

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

End Sub

Použití funkce Len() #3

Následující 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ů

Pro další práci s textem si představíme funkce, které prochází textové řetězce a vrací pořadí, 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 potáčku ř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) anebo vybranou část uprostřed řetězce.

Uvedené funkce použijeme v proceduře, která vyhledá první mezeru v textovém řetězci a vrátí první slovo zleva.

Option Explicit

Sub upravaretezce()

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íbí se vám článek a chcete vědět o každém dalším? Dejte Like Financím v praxi na sociálních sítích.

Google+

Sdílejte článek na sociálních sítích

Nahoru