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.