VBA拆分限制未按预期工作?

VBA拆分限制未按预期工作?,vba,split,Vba,Split,所以我试着运行下面的sub,我希望在第二次出现时分割字符串iden,但是我得到的是一个包含以下元素1-SWFEED-4.6.14,10,3_C的数组,但是我想要的是一个包含元素1-SWFEED-4.6.14_10,3_C的数组。我做错了什么 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, "_",

所以我试着运行下面的sub,我希望在第二次出现时分割字符串iden,但是我得到的是一个包含以下元素1-SWFEED-4.6.14,10,3_C的数组,但是我想要的是一个包含元素1-SWFEED-4.6.14_10,3_C的数组。我做错了什么

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

我还试着使用限制作为UBoundsplitiden,但它也不起作用。

想出了这个sub,它满足了我的需要,谢谢@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
这个怎么样

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

第三个参数描述使用Split创建的数组中的元素数。因此,当您将3作为参数传递时,split将为您提供三个元素。1-SWFEED-4.6.14,10,3_C.我认为没有一个预定义的函数可以让你做你需要的事情。只需编写自己的函数。首先找到第二个下划线,然后使用left和right函数获取iden的开头和结尾,并将它们添加到数组中。谢谢,这很有意义。我对msdn上的一个示例感到困惑。