J'essaie d'obtenir deux codes à partir de cette chaîne: "HL PNX-70 [15200]" Mais avec ce code, j'obtiens deux fois la même sortie: "HL PNX-70". Donc, le code n'est pas correctement fait. Comment obtenir la sortie '15200' à partir de la chaîne mentionnée ci-dessus?
Code:
Private Sub Comando221_Click() MsgBox (Right(Split("HL PNX-70[15200]", "[")(0), 50)) MsgBox (Left(Split("HL PNX-70[15200]", "[")(0), 50)) End Sub
4 Réponses :
Split
renvoie un tableau de base zéro, vous êtes donc intéressé par le deuxième élément, index 1. Les deux lignes de votre code extraient "HL PNX-70" et les 50 caractères les plus à gauche et à droite
Ce code illustre deux façons d'extraire la chaîne désirée pour votre exemple spécifique, mais il n'est pas nécessairement irréprochable si vous travaillez avec plusieurs types de chaînes différents. Vous pouvez également utiliser Instr, comme dans l'autre réponse, ou regarder des expressions régulières si vous avez besoin d'une correspondance de modèle plus complexe.
Sub y() Dim s As String, v s = "HL PNX-70[15200]" v = Split(s, "[") Debug.Print v(0) 'HL PNX-70 Debug.Print v(1) '15200] MsgBox Left(v(1), Len(v(1)) - 1) '15200 v = Split(v(1), "]") MsgBox v(0) '15200 End Sub
Vous pouvez essayer:
Option Explicit Sub Test() Dim str As String, Result As String Dim Start_Point As Long, No_Characters As Long str = "HL PNX-70[15200]" Start_Point = InStr(str, "[") + 1 No_Characters = Len(str) - Start_Point Result = Mid(str, Start_Point, No_Characters) Debug.Print Result End Sub
Voici votre code
Dim text, text1, text2 As String text = "HL PNX-70[15200]" text1 = Break_String(CStr(text), 0) text2 = Break_String1(Break_String(CStr(text), 1)) Function Break_String(a As String, pos As Integer) As String Dim WrdArray() As String WrdArray() = Split(a, "[") Break_String = WrdArray(pos) End Function Function Break_String1(a As String) As String Dim WrdArray() As String WrdArray() = Split(a, "]") Break_String1 = WrdArray(0) End Function