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