2014-07-14 93 views
0

所以我想運行下面的子,我希望在第二次出現「_」時分割字符串標識,但我得到的是一個數組,其中包含以下元素「1-SWFEED-4.6.14」,「 10「,」3_C「,但我想要的是一個元素爲」1-SWFEED-4.6.14_10「,」3_C「的數組。我究竟做錯了什麼?VBA拆分限制不能按預期工作?

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 

我也嘗試使用極限作爲UBound(拆分(iden,「_」)),但它也不起作用。

+0

第三個參數描述了使用Split創建的數組中元素的數量。所以當你傳遞3作爲參數split給你三個元素。 「1-SWFEED-4.6.14」,「10」,「3_C」。我不認爲有一個預定義的功能,可以讓你做你需要的。只需編寫你自己的功能。首先找到第二個下劃線,然後使用左右函數來獲得你的標識的開始和結束,並將它們添加到數組中。 – Maco

+0

謝謝,這很有道理。我對msdn上的一個例子感到困惑。 – Crust3

回答

0

想出了這個子這做什麼,我需要(感謝@Maco的評論)

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
如何

樣?

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