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()

Užití textových funkcí v tabulkovém procesoru MS Excel je poměrně frekventovaná záležitost. Excel disponuje velkým množstvím textových funkcí, které umožňují například vrátit délku řetězce pomocí funkce DÉLKA(), vrátit pozici hledaného znaku v řetězci pomocí funkce HLEDAT(), upravit řetězec pomocí funkcí ZLEVA() a ZPRAVA() apod.

Při programování aplikací v jazyce VBA je někdy potřeba použít stejných operací pomocí funkcí Len(), InStr(), Left(), Mid() a Right(). Právě těmto funkcím je věnován tento článek.

Funkce Len() v praxi #1

VBA funkce Len() vrátí počet znaků textového řetězce. V české lokalizaci této funkci odpovídá excelovská funkce DÉLKA().

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() v praxi #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

Funkce Len() v praxi #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

Výsledek procedury obsahuje následující obrázek.

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

Úprava textových řetězců v praxi

V následující proceduře jsou pro úpravu textových řetězců kombinovány funkce InStr() a Left().

Funkce InStr() je textová funkce, která dokáže vyhledat pozici hledaného znaku v řetězci.

Funkce Left() vrací specifikovaný počet znaků řetězce zleva.

Jazyk VBA disponuje dalšími funkcemi na úpravu textových řetězců, které mají analogický význam jako funkce Left(). Jde o funkce Right() a Mid().

Následující procedura vyhledá v řetězci první mezeru 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