在VBA中使用LastIndexOf()拆分字符串

在VBA中使用LastIndexOf()拆分字符串,vba,excel,Vba,Excel,如何在VBA中通过LastIndexOf()拆分字符串 我有一个字符串,它可以有这样的值 Dim input As String input = "customName_D3" input = "Custom_Name_D3" input = "my_Custom_Name_D3" 类似的,它可以有许多“,但在最后一个“之后,它包含单元格名称 我想将这个字符串拆分为两个不同的字符串,以获取单元格名称和其他还押部分 差不多 cellName = D3 remainingS

如何在VBA中通过
LastIndexOf()
拆分字符串

我有一个字符串,它可以有这样的值

Dim input As String
   input =  "customName_D3"
   input =  "Custom_Name_D3"
   input =  "my_Custom_Name_D3"
类似的,它可以有许多
,但在最后一个
之后,它包含单元格名称 我想将这个字符串拆分为两个不同的字符串,以获取单元格名称和其他还押部分 差不多

cellName = D3
remainingString = my_custom_Name

请尝试以下代码:

Public Function SplitAtLast(ByVal sText As String, ByVal sMatch As String, ByRef sLeft As String, ByRef sRight As String) As Integer
    Dim nIndex As Integer
    ' Search for sMatch within sText
    nIndex = InStrRev(sText, sMatch)

    If nIndex > 0 Then ' sMatch was found as nIndex'th character
        ' Save all chars before sMatch
        sLeft = Left$(sText, nIndex - 1)
        ' Save all chars after sMatch
        sRight = Mid$(sText, nIndex + Len(sMatch))
    Else ' sMatch was NOT found
        ' Save all chars into sLeft
        sLeft = sText
        sRight = ""
    End If
    ' Returns position of found match
    SplitAtLast = nIndex
End Function
称为

Dim sInput As String, sLeft As String, sRight As String, nIndex As Integer

sInput = "customName_D3"
nIndex = SplitAtLast(sInput, "_", sLeft, sRight)
MsgBox sInput & " : " & nIndex & ", <" & sLeft & ">, <" & sRight & ">"

sInput = "Custom_Name_D3"
nIndex = SplitAtLast(sInput, "_", sLeft, sRight)
MsgBox sInput & " : " & nIndex & ", <" & sLeft & ">, <" & sRight & ">"

sInput = "my_Custom_Name_D3"
nIndex = SplitAtLast(sInput, "_", sLeft, sRight)
MsgBox sInput & " : " & nIndex & ", <" & sLeft & ">, <" & sRight & ">"
Dim sInput作为字符串,sLeft作为字符串,sRight作为字符串,nIndex作为整数
sInput=“customName\u D3”
nIndex=SplitAtLast(sInput,“,”sLeft,SRRIGHT)
MsgBox sInput&“:”&nIndex&“,”
sInput=“自定义名称”D3
nIndex=SplitAtLast(sInput,“,”sLeft,SRRIGHT)
MsgBox sInput&“:”&nIndex&“,”
sInput=“我的自定义名称”D3
nIndex=SplitAtLast(sInput,“,”sLeft,SRRIGHT)
MsgBox sInput&“:”&nIndex&“,”
问候,, 丹尼尔

Dim sInput As String, sLeft As String, sRight As String, nIndex As Integer

sInput = "customName_D3"
nIndex = SplitAtLast(sInput, "_", sLeft, sRight)
MsgBox sInput & " : " & nIndex & ", <" & sLeft & ">, <" & sRight & ">"

sInput = "Custom_Name_D3"
nIndex = SplitAtLast(sInput, "_", sLeft, sRight)
MsgBox sInput & " : " & nIndex & ", <" & sLeft & ">, <" & sRight & ">"

sInput = "my_Custom_Name_D3"
nIndex = SplitAtLast(sInput, "_", sLeft, sRight)
MsgBox sInput & " : " & nIndex & ", <" & sLeft & ">, <" & sRight & ">"