Funkce řetězců a podřetězců VBA

VBA má mnoho řetězcových funkcí, které vám umožní manipulovat a pracovat s textem a řetězci ve vašem kódu. V tomto tutoriálu se budeme zabývat funkcemi, které vám umožní extrahovat podřetězce z řetězců, odstraňovat mezery z řetězců, převádět případ textu nebo řetězce, porovnávat řetězce a další užitečné funkce řetězců.

Extrahování podřetězce

Funkce levého řetězce VBA

Funkce VBA Left vám umožňuje extrahovat podřetězec z textu nebo řetězce začínajícího z levé strany. Syntaxe funkce levého řetězce VBA je:

Vlevo (řetězec, počet_znaků) kde:

  • Řetězec - původní text.
  • Počet_znaků - Celé číslo, které určuje počet znaků, které se mají extrahovat z původního textu, od začátku.

Následující kód ukazuje, jak pomocí funkce levého řetězce extrahovat první čtyři znaky daného řetězce:

1234567891011 Dílčí použitíTheLeftStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "AutomateExcel"valueTwo = Left (valueOne, 4)MsgBox valueTwoEnd Sub

Výsledek je:

Funkce Left extrahovala první čtyři písmena AutomateExcel, což jsou Auto.

Funkce pravého řetězce VBA

Funkce VBA Right vám umožňuje extrahovat podřetězec z textu nebo řetězce začínajícího z pravé strany. Syntaxe funkce pravého řetězce VBA je:

Vpravo (řetězec, počet_charakterů) kde:

  • Řetězec - původní text.
  • Počet_znaků - Celé číslo, které určuje počet znaků, které se mají extrahovat z původního textu, počínaje koncovkou.

Následující kód ukazuje, jak pomocí funkce Right String extrahovat poslední čtyři znaky řetězce:

1234567891011 Dílčí použitíTheRightStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "AutomateExcel"valueTwo = Right (valueOne, 4)MsgBox valueTwoEnd Sub

Výsledek je:

Správná funkce extrahovala poslední čtyři písmena AutomateExcel, která jsou xcel.

Funkce středního řetězce VBA

Funkce VBA Mid vám umožňuje extrahovat podřetězec z textu nebo řetězce, a to od jakékoli pozice v řetězci, který zadáte. Syntaxe funkce středního řetězce VBA je:

Střední (řetězec, počáteční_pozice, [počet_charakterů]) kde:

  • Řetězec - původní text.
  • Starting_position - Pozice v původním textu, odkud se funkce začne extrahovat.
  • Počet_znaků (Volitelný) - Celé číslo, které určuje počet znaků, které se mají extrahovat z původního textu počínaje Počáteční_pozicí. Pokud je prázdné, funkce MID vrátí všechny znaky z Počáteční_pozice.

Následující kód ukazuje, jak pomocí funkce Mid String extrahovat čtyři znaky, počínaje od druhé pozice nebo znaku v řetězci:

1234567891011 Sub UsingTheMidStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "AutomateExcel"valueTwo = Mid (valueOne, 2, 4)MsgBox valueTwoEnd Sub

Výsledek je odeslán do msgboxu:

Střední funkce extrahovala čtyři písmena AutomateExcel počínaje druhým znakem/pozicí/písmenem, která jsou utom.

Zjištění polohy podřetězce

Funkce řetězce VBA Instr

Funkce VBA Instr vrací počáteční pozici podřetězce v jiném řetězci. Tato funkce rozlišuje velká a malá písmena. Syntaxe funkce řetězce VBA Instr je:

Instr ([Start], String, Substring, [Compare]) kde:

  • Start (Volitelný) - Toto určuje počáteční pozici funkce, ze které se má hledat. Pokud je prázdné, použije se výchozí hodnota 1.
  • Řetězec - původní text.
  • Podřetězec- Podřetězec v původním textu, u kterého chcete najít polohu.
  • Porovnat (Volitelný)- Toto určuje typ porovnávání. Pokud je prázdné, použije se binární srovnání.

-vbBinaryCompare - binární srovnání (velká a malá písmena jsou považována za odlišná)
-vbTextCompare - Porovnání textu (velká a malá písmena jsou považována za stejná)
-vbDatabaseCompare - Porovnání databáze (Tato možnost se používá pouze v aplikaci Microsoft Access a je porovnáním na základě databáze)

Následující kód ukazuje, jak pomocí funkce řetězce Instr určit první výskyt podřetězce „Th“ v hlavním řetězci:

123456789101112 Dílčí použitíTheInstrStringFunction ()Dim valueOne As StringDim positionofSubstring As IntegervalueOne = "Toto je text"positionofSubstring = InStr (1, valueOne, "Th")Debug.Print positionofSubstringEnd Sub

Výsledek (výstup do Okamžitého okna) je:

Funkce Instr vrátila pozici prvního výskytu podřetězce „Th“, což je 1. Všimněte si, že tato funkce zahrnuje mezery v počtu.

Funkce řetězce VBA InstrRev

Funkce VBA InstrRev vrací počáteční pozici podřetězce v jiném řetězci, ale začíná počítat pozici od konce řetězce. Tato funkce rozlišuje velká a malá písmena. Syntaxe funkce řetězce VBA InstrRev je:

InstrRev (String, Substring, [Start], [Compare]) kde:

  • Řetězec - původní text.
  • Podřetězec- Podřetězec v původním textu, u kterého chcete najít polohu.
  • Start (Volitelný) - Toto určuje pozici, ze které se má začít hledat. Pokud je prázdné, funkce začne hledat od posledního znaku.
  • Porovnat (Volitelný)- Toto určuje typ porovnávání. Pokud je prázdné, použije se binární srovnání.

-vbBinaryCompare - binární srovnání (velká a malá písmena jsou považována za odlišná)
-vbTextCompare - Porovnání textu (velká a malá písmena jsou považována za stejná)
-vbDatabaseCompare - Porovnání databáze (Tato možnost se používá pouze v aplikaci Microsoft Access a je porovnáním na základě databáze)

Následující kód ukazuje, jak pomocí funkce řetězce InstrRev určit první výskyt podřetězce „Th“ v hlavním řetězci, počínaje od konce řetězce:

1234567891011 Dílčí použitíTheInstrRevStringFunction ()Dim valueOne As StringDim positionofSubstring As IntegervalueOne = "Toto je text"positionofSubstring = InStrRev (valueOne, "Th")Debug.Print positionofSubstringEnd Sub

Výsledek se zobrazí v okně Immediate:

Funkce InstrRev vrátila pozici prvního výskytu podřetězce „Th“, ale začíná počítat od konce, který je 9. Všimněte si, že tato funkce zahrnuje mezery v počtu.

Odebírání mezer z řetězce

Funkce řetězce VBA LTrim

Funkce VBA LTrim odstraní z textu nebo řetězce všechny úvodní mezery. Syntaxe funkce řetězce VBA LTrim je:

LTrim (String) kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak pomocí funkce VBA LTrim odstranit úvodní mezery v daném řetězci:

123456789101112 Dílčí použitíTheLTrimStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "Toto je doplněk webové stránky https://easyexcel.net/excel/"valueTwo = LTrim (valueOne)MsgBox valueOneMsgBox valueTwoEnd Sub

Výsledky jsou:

Funkce LTrim odstranila úvodní mezery pro valuetwo, která je zobrazena ve druhém okně se zprávou.

Funkce řetězce VBA RTrim

Funkce VBA RTrim odstraní z textu nebo řetězce všechny koncové mezery. Syntaxe řetězcové funkce VBA RTrim je:

RTrim (String) kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak pomocí funkce VBA RTrim odstranit koncové mezery v daném řetězci:

123456789101112 Dílčí použitíTheRTrimStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "Toto je doplněk webové stránky https://easyexcel.net/excel/"valueTwo = RTrim (valueOne)MsgBox valueOneMsgBox valueTwoEnd Sub

Doručenými výsledky jsou:

Funkce RTrim odstranila koncové mezery pro valuetwo, které jsou zobrazeny ve druhém okně se zprávou.

Funkce VBA Trim String

Funkce Ořez VBA odstraní z textu nebo řetězce všechny úvodní a koncové mezery. Syntaxe funkce oříznutí řetězce VBA je:

Ořízněte (řetězec), kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak použít funkci Oříznout VBA k odstranění úvodních a koncových mezer v daném řetězci:

123456789101112 Dílčí používáníTheTrimStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "Toto je doplněk webové stránky https://easyexcel.net/excel/"valueTwo = Trim (valueOne)MsgBox valueOneMsgBox valueTwoEnd Sub

Výsledky jsou:

Funkce Oříznout odstranila úvodní a koncové mezery pro valuetwo, která je zobrazena ve druhém okně se zprávou.

Funkce pouzdra VBA

Funkce řetězce VBA LCase

Funkce VBA LCase převádí písmena v textu nebo řetězci na malá písmena. Syntaxe funkce řetězce VBA LCase je:

LCase (řetězec) kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak pomocí funkce LCase String převést všechna písmena v daném řetězci na malá písmena:

1234567891011 Dílčí použitíTheLCaseStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "TO JE PRODUKT"valueTwo = LCase (valueOne)MsgBox valueTwoEnd Sub

Výsledek je:

Funkce LCase převedla všechna písmena v řetězci na malá písmena.

Funkce řetězce VBA UCase

Funkce VBA UCase převádí písmena v textu nebo řetězci na velká písmena. Syntaxe funkce řetězce VBA UCase je:

UCase (řetězec) kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak pomocí funkce řetězce UCase převést všechna písmena v daném řetězci na velká písmena:

1234567891011 Dílčí použitíTheUCaseStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "toto je produkt"valueTwo = UCase (valueOne)MsgBox valueTwoEnd Sub

Výsledek je:

Funkce UCase převedla všechna písmena v řetězci na velká písmena.

Funkce VBA StrConv

Funkce VBA StrConv dokáže převést písmena v textu nebo řetězci na velká písmena, malá písmena, správná písmena nebo unicode v závislosti na typu převodu, který zadáte. Syntaxe funkce řetězce VBA StrConv je:

StrConv (String, Conversion, [LCID]) kde:

  • Řetězec - původní text.
  • Konverze - požadovaný typ převodu.
  • [LCID] (Volitelné) -Volitelný parametr, který určuje LocaleID. Pokud je prázdné, použije se systémové LocaleID.

Následující kód ukazuje, jak pomocí funkce řetězce StrConv převést řetězec na správný případ:

1234567891011 Dílčí použitíTheStrConvStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "toto je ten produkt"valueTwo = StrConv (valueOne, vbProperCase)MsgBox valueTwoEnd Sub

Výsledek je:

Pomocí parametru převodu určíte typ převodu, který chcete provést:

  • vbLowerCase převede všechna písmena v textu na malá písmena.
  • vbUpperCase převede všechna písmena v textu na velká písmena.
  • vbProperCase převede první písmeno každého slova v textu na velká písmena, zatímco všechna ostatní písmena jsou ponechána jako malá písmena.
  • vbUnicode převádí řetězec na unicode.
  • vbFromUnicode převádí řetězec z unicode na výchozí kódovou stránku systému.

Porovnání řetězců

Funkce VBA StrComp

Funkce VBA StrComp String vám umožňuje porovnat dva řetězce. Funkce vrací:

  • 0, pokud se dva řetězce shodují
  • -1, pokud je řetězec1 menší než řetězec2
  • 1, pokud je řetězec1 větší než řetězec2
  • Hodnota null, pokud některý z řetězců byl Null

Následující kód ukazuje, jak použít funkci StrComp k porovnání dvou řetězců:

123456789101112 Dílčí použitíTheStrCompStringFunction ()Dim valueOne As StringDim valueTwo As StringDim resultofComparison As IntegervalueOne = "AutomateExcel"valueTwo = "AutomateExcel"resultofComparison = StrComp (valueOne, valueTwo)Debug.Print resulttofComparisonEnd Sub

Výsledek je:

Funkce StrComp našla přesnou shodu mezi těmito dvěma řetězci a vrátila hodnotu 0.

Operátor jako VBA

Operátor jako VBA vám umožňuje porovnat text nebo řetězec se vzorem a zjistit, zda existuje shoda. Obvykle byste používali operátor Like ve spojení se zástupnými znaky. Následující kód ukazuje, jak používat operátor Like:

123456789101112 Dílčí používáníTheLikeOperatorInVBA ()Dim valueOne As StringvalueOne = "Podívejme se na výstup"Pokud valueOne Like "*zobrazit*" PakMsgBox "Existuje shoda, tento řetězec obsahuje slovo"JinýMsgBox „Nebyla nalezena žádná shoda“Konec IfEnd Sub

Výsledek je:

Mezi zástupné znaky, které můžete s operátorem Like použít k vyhledání shod vzorů, patří:

  • ? který odpovídá jednomu znaku
  • #, které odpovídá jedné číslici
  • * který odpovídá nule nebo více znakům

Následující kód ukazuje, jak byste použili operátora Like a? zástupný znak, který odpovídá vzoru ve vašem kódu:

123456789101112 Dílčí používáníTheLikeOperatorWithAWildcardInVBA ()Dim valueOne As StringvalueOne = "The"Pokud valueOne Like "?? e" PakMsgBox „Existuje shoda, byl nalezen odpovídající vzor“JinýMsgBox „Nebyla nalezena žádná shoda“Konec IfEnd Sub

Výsledkem je:

Další užitečné funkce řetězců VBA

Funkce nahrazení řetězce VBA

Funkce nahrazení VBA nahradí sadu znaků v řetězci jinou sadou znaků. Syntaxe funkce nahrazení řetězce VBA je:

Nahradit (řetězec, Najít, Nahradit, [Start], [Počet], [Porovnat]) kde:

  • Řetězec - původní text.
  • Najít - podřetězec, který se má hledat v původním textu.
  • Nahradit - Podřetězec, který má nahradit Najít podřetězec.
  • Start (Volitelný)- Pozice pro zahájení vyhledávání z původního textu. Je -li prázdné, použije se hodnota 1 a funkce začíná na pozici prvního znaku.
  • Počet (Volitelný)- Počet výskytů podřetězce Najít v původním textu, který má být nahrazen. Je -li prázdné, nahradí se všechny výskyty podřetězce Najít.
  • Porovnat (Volitelný)- Toto určuje typ porovnávání. Pokud je prázdné, použije se binární srovnání.

    -vbBinaryCompare - binární srovnání
    -vbTextCompare - Porovnání textu
    -vbDatabaseCompare - Porovnání databáze (Tato možnost se používá pouze v aplikaci Microsoft Access a je porovnáním na základě databáze.)

Následující kód ukazuje, jak používat funkci Nahradit řetězec:

1234567891011 Sub UsingTheReplaceStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "ProductABC"valueTwo = Nahradit (valueOne, "ABC", "XYZ")MsgBox valueTwoEnd Sub

Výsledek je:

Funkce Nahradit našla podřetězec ABC v rámci ProductABC a nahradila jej podřetězcem XYZ.

Funkce VBA StrReverse

Funkce VBA StrReverse převrací znaky v daném textu nebo řetězci. Syntaxe funkce řetězce VBA StrReverse je:

StrReverse (String) kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak použít funkci VBA StrReverse k obrácení znaků v řetězci Product:

1234567891011 Dílčí použitíTheStrReverseStringFunction ()Dim valueOne As StringDim valueTwo As StringvalueOne = "Produkt"valueTwo = StrReverse (valueOne)MsgBox valueTwoEnd Sub

Výsledek je:

Funkce VBA Len String

Funkce VBA Len vrací počet znaků v textovém řetězci. Syntaxe funkce VBA Len String je:

Len (řetězec) kde:

  • Řetězec - původní text.

Následující kód ukazuje, jak použít funkci Len String k určení délky řetězce AutomateExcel:

1234567891011 Dílčí používáníTheLenFunction ()Dim valueOne As StringDim stringLength As IntegervalueOne = "AutomateExcel"stringLength = Len (valueOne)Debug.Print stringLengthEnd Sub

Výsledek je:

Funkce Len spočítala všechny znaky v textu AutomateExcel, což je 13 písmen.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave