Zusätzliche VBA-String-Funktionen
Jede Programmiersprache hat einen eigenen Satz von Funktionen, der "vollständig" ist in dem Sinne, dass sie es dem Benutzer ermöglichen, jedes gewünschte Ergebnis zu erzielen. Die Sprachen unterscheiden sich nicht nur in den Namen, die den Funktionen gegeben werden, sondern auch in den Argumenten, mit denen das Ergebnis beeinflusst werden kann. Einige Funktionen sind in einer Sprache verfügbar, in einer anderen nicht. Das Code VBA Add-in fügt einige Funktionen hinzu hinzu, die auch in anderen Sprachen wie VB.NET verfügbar sind; diese werden hier vorgestellt. Um zu verdeutlichen, dass es sich um String-Funktionen handelt, wurde ihren Namen der Zusatz "String" vorangestellt
StartsWith
Prüft, ob ein String mit einer Teilzeichenkette beginnt.
Public Function StringStartsWith(Expression As String, Find As String, _
Optional Compare As VbCompareMethod = vbBinaryCompare) As Boolean
'Returns boolean value indicating whether the inputstring starts within
' a certain string or not.'
'?StringStartsWith("abcd","ab") > True'
'?StringStartsWith("abcd","b") > False'
'?StringStartsWith("b","ab") > False'
'?StringStartsWith("b","ba") > False'
'?StringStartsWith("abcd","") > True maybe better to raise error'
'Err.Raise 5, "StartsWith", "Invalid procedure call"'
StringStartsWith = InStr(1, Expression, Find, Compare) = 1
End Function
Wählen Sie in der Code-VBA-Symbolleiste VBA » String » Fragments »

EndsWith
Ermittelt, ob das Ende der angegebenen Zeichenkette mit dem angegebenen Zeichen übereinstimmt
Public Function StringEndsWith(Expression As String, Find As String, _
Optional Compare As VbCompareMethod = vbBinaryCompare) As Boolean
'Returns boolean value indicating whether the inputstring ends wit a
' certain string or not.'
'?StringEndsWith("abcd","cd") > True'
'?StringEndsWith("abcd","cD") > False'
StringEndsWith = InStrRev(Expression, Find, -1, Compare) = Len(Expression) - Len(Find) + 1
End Function
Enthält
Prüft, ob eine Zeichenfolge, eine Zelle oder ein Bereich die gesuchte Teilzeichenkette enthält
Public Function StringContains(Expression As String, Part As String, _
Optional Compare As VbCompareMethod = vbBinaryCompare) As Boolean
'Returns a value indicating whether a specified (sub-)string occurs within this string.'
'?StringContains("ab", "d",vbBinaryCompare) > False'
'?StringContains("ab", "b",vbBinaryCompare) > True'
'?StringContains("ab", "a",vbBinaryCompare) > True'
'?StringContains("abcd", "bc",vbBinaryCompare) > True'
StringContains = (InStr(1, Expression, Part, Compare) >= 1)
End Function
einfügen.
Gibt eine neue Zeichenkette zurück, in die eine bestimmte Zeichenkette an einer bestimmten Indexposition in die ursprüngliche Zeichenkette eingefügt wird Zeichenfolge
Function Insert(Expression1 As String, startIndex As Long, Expression2 As String) As String
'Returns a new string in which a specified string is inserted at a specified index position
' in the input string.'
'?Stringinsert("abc",1,"xy") > xyabc'
'?Stringinsert("abc",2,"xy") > axybc'
'?Stringinsert("abc",3,"xy") > abxyc'
'?Stringinsert("abc",4,"xy") > abcxy'
'?Stringinsert("abc",0,"xy") > error 5 Invalid procedure call'
'?Stringinsert("abc",5,"xy") > error 5 Invalid procedure call'
'to make forgiving, uncomment below lines'
'If StartIndex < 1 Then StartIndex = 1'
'If Len(Expression1) < StartIndex Then StartIndex = Len(Expression1) + 1'
StringInsert = Mid(Expression1, 1, StartIndex - 1) & Expression2 & Mid(Expression1, _
StartIndex, Len(Expression1) - StartIndex + 1)
End Function
entfernen
Entfernt die angegebene Anzahl von Teilzeichenfolgen aus der Zeichenkette, beginnend am Anfang der Zeichenkette
Public Function StringRemove(Expression As String, Find As String, Optional Start As Integer = 1, _
Optional Count As Integer = 1) As String
'Returns a new string in which a specified number of characters from the current string are deleted.'
'Removes substring from string using and analogous to VBA Replace function:'
'first the replace is done, then substring is created based on Start'
'?StringRemove(Expression:="abab", Find:="b") > aab'
'?StringRemove(Expression:="abab", Find:="b", Count:=2) > aa'
'?StringRemove(Expression:="abcb", Find:="b",Start:=1) > acb'
'?StringRemove(Expression:="abcb", Find:="b",Start:=2) > cb'
'?StringRemove(Expression:="abcb", Find:="b",Start:=1, Count:=2) > ac'
StringRemove = Replace(Expression:=Expression, Find:=Find, Replace:=vbNullString, Start:=Start, _
Count:=Count)
End Function
PadLeft
Gibt eine neue Zeichenkette der angegebenen Länge zurück, bei der der Anfang der aktuellen Zeichenkette mit Leerzeichen oder mit einem angegebenen Unicode-Zeichen aufgefüllt wird
Public Function StringPadLeft(Expression As String, width As Integer, Optional Char As String = " ")
'Returns a new string of a specified length in which the beginning of the current string is
' padded with spaces or with a specified character.''
'?StringPadLeft("abc",6,"x") > xxxabc'
'?String"|" & PadLeft("abc",6) > | abc'
StringPadLeft = Right(String(width, Char) & Expression, width)
End Function
PadRight
Gibt eine neue Zeichenkette der angegebenen Länge zurück, in der das Ende der aktuellen Zeichenkette mit Leerzeichen oder einem angegebenen Unicode-Zeichen aufgefüllt ist
Public Function StringPadRight(Expression As String, length As Integer, Optional Char As String = " ")
'Returns a new string of a specified length in which the end of the current string is padded
' with spaces or with a specified character.'
'?StringPadright("abc",6,"x") > abcxxx'
StringPadRight = Left(Expression & String(length, Char), length)
End Function
ToCharArray
Kopiert die Zeichen einer Zeichenkette in ein Unicode-Zeichenfeld.
Public Function StringToCharArray(Expression As String) As Variant
'Copies the characters in this instance to an array.'
'arr = ToCharArray("abcd"): For i = LBound(arr) To UBound(arr): ?arr(i): Next'
Dim arr As Variant 'array
Dim i As Integer
ReDim arr(Len(Expression) - 1)
For i = 1 To Len(Expression)
arr(i - 1) = Mid$(Expression, i, 1)
Next
StringToCharArray = arr
End Function
IsNullOrEmpty
Zeigt an, ob die angegebene Zeichenfolge vbNullString oder eine leere Zeichenfolge ("") ist oder nicht. Diese Funktion ist nicht enthalten - stattdessen können Sie aus dem gleichen Menü das Fragment 'Is Length Greater Than 0' verwenden, das den umgekehrten, aber entsprechend einfachen Code einfügt, einfach > in = ändern.
= (Len() > 0)
Wenn Sie das Fragment an einer Bedingungsposition wie If ... Then
verwenden, führt dies zu der
beabsichtigten
If (Len(
mit einer ausgewählten Zeichenfolge an der Position ⟨String⟩ eingefügt
IsNullOrWhiteSpace
Gibt an, ob die angegebene Zeichenkette vbNullString oder eine leere Zeichenkette ("") oder nur Whitespaces ist oder nicht.
Beachten Sie, dass vbTab
in dieser Implementierung nicht berücksichtigt wird.
= (Len(Trim()) = 0)
IndexOf und LastIndexOf
Meldet die einstellige Indexposition des ersten bzw. letzten Vorkommens eines angegebenen Unicode-Zeichens oder einer Zeichenkette in dieser Instanz. Die Methode gibt 0 zurück, wenn das Zeichen oder die Zeichenkette nicht gefunden wird
In VBA wird IndexOf
als InStr bezeichnet.
In VBA wird LastIndexOf
als InStrRev bezeichnet.
Teilzeichenfolge
Es gibt keine vollständige Entsprechung für VB.NET String.Substring. Die naheliegendste ist die Funktion Mid
. Andere Prozeduren, um Teilstrings zu erhalten
sind Left und Right.
Concat
Eine spezielle Funktion für die Verkettung ist angesichts des einfachen &-Operators kaum sinnvoll - siehe Verkettung
Vergleichen Sie
Neben den üblichen Vergleichsoperatoren, die zum Vergleichen von Strings verwendet werden können, = und ⟨⟩, ist das Äquivalent für VB.NET String.Compare die StrComp Funktion, die hier erklärt wird....