Autres fonctions VBA pour les chaînes de caractères
Chaque langage de programmation possède un ensemble de fonctions natives qui est "complet", en ce sens qu'il permet à l'utilisateur de produire n'importe quel résultat dont il a besoin. dans le sens où il permet à l'utilisateur de produire n'importe quel résultat dont il a besoin. Les langages peuvent différer à la fois dans les noms donnés aux fonctions - suivant certaines traditions - mais aussi dans les arguments disponibles pour modifier le résultat. Certaines fonctions sont disponibles dans une langue mais pas dans d'autres. Le module complémentaire Code VBA ajoute certaines fonctions qui sont disponibles dans d'autres langages tels que VB.NET, et qui sont présentées ici. Pour indiquer qu'il s'agit de fonctions de type "String", leurs noms ont été préfixés par "String".
Commence par
Teste si une chaîne commence par une sous-chaîne.
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
Dans la barre d'outils Code VBA, sélectionnez VBA » String » Fragments »

Se termine par
Détermine si la fin de la chaîne spécifiée correspond au caractère spécifié
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
Contient
Teste si une chaîne, une cellule ou range contient la sous-chaîne que vous souhaitez trouver.
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
Insérer
Renvoie une nouvelle chaîne dans laquelle une chaîne spécifiée est insérée à une position d'index spécifiée dans la chaîne d'origine chaîne
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
Retirer
Supprime le nombre spécifié de sous-chaînes de la chaîne en commençant par le début de la chaîne.
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
Renvoie une nouvelle chaîne d'une longueur spécifiée dans laquelle le début de la chaîne actuelle est rempli d'espaces ou d'un caractère Unicode spécifié. d'espaces ou d'un caractère Unicode spécifié
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
Renvoie une nouvelle chaîne d'une longueur spécifiée dans laquelle la fin de la chaîne actuelle est remplie d'espaces ou d'un caractère Unicode spécifié.
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
Copie les caractères d'une chaîne dans un tableau de caractères Unicode.
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
Indique si la chaîne spécifiée est vbNullString ou une chaîne vide ("") ou non. Cette fonction n'est pas incluse - à la place, vous pouvez utiliser dans le même menu le fragment 'Is Length Greater Than 0' qui insère le code inversé mais simple correspondant, il suffit de remplacer > par =.
= (Len() > 0)
Si vous utilisez le fragment dans une position de condition telle que If ... Then
, vous obtiendrez le résultat suivant
voulu
If (Len(
avec une chaîne sélectionnée insérée à la position ⟨String⟩
IsNullOrWhiteSpace
Indique si la chaîne spécifiée est vbNullString ou une chaîne vide ("") ou seulement des espaces blancs ou non.
Notez que vbTab
n'est pas pris en compte dans cette implémentation.
= (Len(Trim()) = 0)
IndexOf et LastIndexOf
Indique la position de l'index basé sur un seul chiffre de la première ou de la dernière occurrence d'un caractère ou d'une chaîne Unicode spécifié(e) dans cette instance. La méthode renvoie 0 si le caractère ou la chaîne n'est pas trouvé.
En VBA, IndexOf
s'appelle InStr.
Dans VBA, LastIndexOf
s'appelle InStrRev
Sous-chaîne
Il n'existe pas d'équivalent complet pour VB.NET String.Substring. Le plus proche est la fonction Mid
. D'autres procédures permettant d'obtenir des sous-chaînes
sont Left et Right.
Concat
Il n'est guère utile d'avoir une fonction spéciale pour la concaténation si l'on considère le simple opérateur & - voir Concaténation
Comparer
Outre les opérateurs de comparaison courants qui peuvent être utilisés pour comparer des chaînes de caractères, = et ⟨⟩, l'équivalent pour VB.NET String.Compare est la fonction StrComp expliquée ici....