2014-07-14 3 views
0

Donc j'essaie d'exécuter le sous suivant où je souhaite diviser la chaîne iden à la deuxième occurrence de "_" Mais ce que je reçois à la place est un tableau avec les éléments suivants "1-SWFEED-4.6.14", " 10 "," 3_C "mais ce que je veux, c'est un tableau avec les éléments" 1-SWFEED-4.6.14_10 "," 3_C ". Qu'est-ce que je fais mal?VBA Split avec la limite ne fonctionne pas comme prévu?

Sub check_split() 
Dim iden As String 
Dim element As Variant 
iden = "1-SWFEED-4.6.14_10_3_C" 

For Each element In Split(iden, "_", 3) 
    MsgBox element 
Next element 

End Sub 

J'ai aussi essayé d'utiliser la limite comme UBound (split (iDEN, "_")), mais il ne fonctionne pas non plus.

+0

Le troisième paramètre décrit le nombre d'éléments dans le tableau que vous créez avec Split. Donc, quand vous passez 3 en tant que paramètre, la division vous donne trois éléments. "1-SWFEED-4.6.14", "10", "3_C". Je ne pense pas qu'il existe une fonction prédéfinie qui vous permet de faire ce dont vous avez besoin. Il suffit d'écrire votre propre fonction. Localisez d'abord le second trait de soulignement, puis utilisez les fonctions gauche et droite pour obtenir le début et la fin de votre iden et les ajouter au tableau. – Maco

+0

Merci, cela a du sens. J'ai été confondu avec un exemple sur msdn. – Crust3

Répondre

0

est venu avec ce sous qui fait ce que je dois (Merci @Maco pour le commentaire)

Sub check_split() 
Dim iden As String 
Dim element As Variant 
Dim indexCounter As Integer 
Dim concIden As String 
iden = "1-SWFEED-4.6.14_10_3_C" 
indexCounter = 0 
For Each element In Split(iden, "_") 
    If indexCounter < UBound(Split(iden, "_")) - 1 Then 
     If Not indexCounter + 1 = UBound(Split(iden, "_")) - 1 Then 
      concIden = concIden + element + "_" 
     Else 
      concIden = concIden + element 
     End If 
    End If 
    indexCounter = indexCounter + 1 
Next element 
MsgBox concIden 
End Sub 
0

Comment cela?

Sub check_split() 
    Dim iden As String, splitLocation As Integer, firstPart As String, secondPart As String 

    iden = "1-SWFEED-4.6.14_10_3_C" 

    splitLocation = WorksheetFunction.Find("_", iden, WorksheetFunction.Find("_", iden, 1) + 1) 

    firstPart = VBA.Left$(iden, splitLocation - 1) //prints 1-SWFEED-4.6.14_10 
    secondPart = VBA.Right$(iden, Len(iden) - splitLocation) // prints 3_C 
End Sub 
Questions connexes