本帖最后由 jiutiwen 于 2011-10-09 09:58:59 编辑

解决方案 »

  1.   

    这么简单,多思考下用SPLIT函数
      

  2.   

    三两行代码的事儿⋯⋯
    1,用字符串函数。split 然后数数⋯⋯
    2,直接自己用循环加计数器判断。
      

  3.   

    思路:
    用“|”分割成数组A()
    第五次就是A(0)到A(4)的总长度
      

  4.   

    循环试用InStr函数即可实现。
      

  5.   

    我太菜了,按大侠们思路写了个,还没测试.不对的话大家扔砖别太狠呵
    function findserial("|",string as string,n as integer)'找"|"在string中第n次出现的位置序数
    string="sd|jf|dsj|fd38|37sj"
    dim aa() as string
    dim serial as integer
    a=split(string,"|")
    for i = 0 to n
    serial=serial+len(a(i))
    next i
    findserial("|",string,n)=serial
    end functionPrivate Sub Command1_Click()
    text1=findserial("|",string,2)'应该等于6
    End Sub
      

  6.   

    function findserial("|",string,n)'找"|"在string中第n次出现的位置序数
    string="sd|jf|dsj|fd38|37sj"
    '...?
    end function
    没见过这么定义函数的:==>
    Function FindSerial(sMark As String, s As String, ByVal n As Long) As Long  '找"|"在string中第n次出现的位置序数
    '...?
        Dim i As Long
        Dim a As Long
        
        For i = 1 To Len(s)
            If Mid(s, i, 1) = sMark Then
                n = n - 1
                If n = 0 Then
                    FindSerial = i
                    Exit Function
                End If
            End If
        Next
    End Function
      

  7.   

    不建议用 Split,因为那样需要累加数组中的串长。
    Private Sub Command1_Click()
    Dim strSource As StringstrSource = "sd|jf|dsj|fd38|37sj"MsgBox findserial("|", strSource, 2)
    End SubPublic Function findserial(strPattern As String, strSource As String, n As Integer) As Integer
    Dim i As Integer, p As IntegerDo Until i = n
        p = p + 1
        p = InStr(p, strSource, strPattern)
        If p > 0 Then
            i = i + 1
        Else
            Exit Do
        End If
    Loopfindserial = p
    End Function
      

  8.   

    多谢of123,多谢诸位大侠!!
    闭门思过ing