1
votes

VBA Split une chaîne en deux parties

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


0 commentaires

4 Réponses :


0
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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


0 commentaires

2
votes

Cherchez-vous ceci?

 Sub Test()

      MsgBox Split("HL PNX-70[15200]", "[")(0)
      MsgBox Replace(Split("HL PNX-70[15200]", "[")(1), "]", "")

 End Sub

entrez la description de l'image ici


0 commentaires