Ce didacticiel montrera comment utiliser la fonction Mid VBA pour extraire des caractères du milieu d'une chaîne de texte.
Fonction médiane
Mid Function Obtenir n caractères
La fonction VBA Mid renvoie n caractères à partir d'une chaîne à partir de la position m :
123456789 | Sub MidExample_1()MsgBox Mid("ABCDEFGHI", 4, 1) 'Le résultat est : "D"MsgBox Mid("ABCDEFGHI", 4, 2) 'Le résultat est : "DE"MsgBox Mid("ABCDEFGHI", 4, 50) 'Le résultat est : "DEFGHI"MsgBox Mid("ABCDEFG hI", 6, 1) 'Le résultat est : "F"MsgBox Mid("ABCDEFG hI", 6, 2) 'Le résultat est : "FG"MsgBox Mid("ABCDEFG hI", 6, 4) 'Le résultat est : "FG h"Fin du sous-marin |
Mid Function Obtenir n caractères dans une variable
Comme indiqué ci-dessus, vous pouvez définir une chaîne en saisissant simplement du texte entouré de guillemets. Mais la fonction MID fonctionnera également avec des variables de chaîne. Ces exemples extrairont n caractères d'une chaîne à partir de la position m.
12345678 | Sous-milieuExample_2()Dim StrEx As String 'Définir une variable de chaîneStrEx = "ABCDEFGHI"MsgBox Mid(StrEx, 2, 1) 'Le résultat est : "B"MsgBox Mid(StrEx, 2, 2) 'Le résultat est : "BC"MsgBox Mid(StrEx, 2, 50) 'Le résultat est : "BCDEFGHI"Fin du sous-marin |
Mid Function Obtenir n caractères d'une cellule
Les chaînes peuvent être définies dans le code VBA, mais vous pouvez également utiliser les valeurs des cellules. Lisez la valeur d'une cellule, conservez-la dans une variable de chaîne et extrayez n caractères de cette valeur de cellule de feuille de calcul à partir de la position m.
1234567891011 | Sous-milieuExample_3()Dim StrEx As String 'Définir une variable de chaîne'Lire la valeur de la cellule A1 dans la feuille de calcul Sheet1StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value'Pour cet exemple, la valeur de la cellule A1 est "Que la Force soit avec vous"MsgBox Mid(StrEx, 4, 6) 'Le résultat est : " le F" (Notez l'espace au début)MsgBox Mid(StrEx, 2, 8) 'Le résultat est : "ay the F"MsgBox Mid(StrEx, 3, 4) 'Le résultat est : "y th"Fin du sous-marin |
Milieu Fonction Remplacer n Caractères
Dans les exemples ci-dessus, la fonction Mid n'a pas modifié la chaîne d'origine. Il en a renvoyé une partie, laissant la chaîne d'origine intacte. Mid Function peut être utilisé pour remplacer des caractères dans une chaîne.
12345678910111213141516171819202122 | Sub MidExample_4()Dim StrEx As String 'Définir une variable de chaîneSub MidExample_4()Dim StrEx As String 'Définir une variable de chaîneStrEx = "Que la Force soit avec vous"Milieu(StrEx, 5, 1) = "VWXYZ"Le résultat de MsgBox StrEx 'est : "Que Vhe Horce soit avec vous"'Mid Function a trouvé la position 5 et a remplacé 1 caractère dans la chaîne d'origineStrEx = "Que la Force soit avec vous"Milieu(StrEx, 5, 3) = "VWXYZ"Le résultat de MsgBox StrEx' est : "Que VWX Horce soit avec vous"'Mid Function a trouvé la position 5 et a remplacé 3 caractères dans la chaîne d'origineStrEx = "Que la Force soit avec vous"Milieu(StrEx, 5, 8) = "VWXYZ"MsgBox StrEx 'Le résultat est : "Que VWXYZorce soit avec vous"'Mid Function a trouvé la position 5 et a essayé de remplacer 8 caractères.'"VWXYZ" n'a que 5 caractères, donc seulement 5 caractères ont été remplacés.Fin du sous-marin |
Mid Function Extraire le deuxième mot d'une phrase
Nous pouvons utiliser la fonction VBA Mid avec la fonction VBA Instr pour obtenir le deuxième mot dans un texte.
La fonction VBA InStr peut renvoyer la position d'un caractère à l'intérieur du texte.
1 | InStr("Deux mots", " ") 'Le résultat est 4 |
Nous pouvons utiliser InStr pour trouver le premier espace, puis nous pouvons utiliser à nouveau InStr en commençant la recherche après le premier espace pour trouver le deuxième espace dans le texte. Enfin, nous pouvons utiliser la fonction Mid pour extraire le mot car nous connaissons la position de départ du deuxième mot et sa longueur (la différence entre les deux positions des espaces).
12345678910111213141516171819202122232425 | Sous-milieuExample_5()Dim StrEx As String 'Définir une variable de chaîneDim StartPos en tant qu'entierDim EndPos en tant qu'entierDim SecondWord en tant que chaîneStrEx = "James Earl Jones est un acteur"PosDébut = InStr(StrEx, " ")'Le résultat est 6'Trouver la position du premier espaceFinPos = InStr(StartPos + 1, StrEx, " ")'Le résultat est 11'Trouvez la position du deuxième espace en lançant la recherche après le premier espaceSecondWord = Mid(StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid extrait les caractères commençant après le premier espace (StartPos +1)'Mid utilise également la longueur du deuxième mot.'C'est la différence entre les positions des espaces -1MsgBox SecondWord'Le résultat est EarlFin du sous-marin |