Sub test()
    Dim w1 As String, iX As Integer, iY As Integer, iZ As Integer
    w1 = "X475Z1.1y26"
    iY = InStr(1, w1, "y", vbTextCompare)
    iZ = InStr(1, w1, "z", vbTextCompare)
    Debug.Print "x=" & Mid$(w1, 2, iZ - 2)
    Debug.Print "y=" & Right$(w1, Len(w1) - iY)
    Debug.Print "z=" & Mid$(w1, iZ + 1, iY - iZ - 1)
End Sub

解决方案 »

  1.   

    不对啊,这字符串是不确定的,而且xyz的顺序也不一定。这段程序是在字符串已知的情况下好用,在我这里不适用的
      

  2.   

    你又没说xyz的顺序。Sub test()
        Dim i As Integer, x(2) As String, k As Integer
        Dim w2 As String, w1 As String
        w1 = "X475Z1.1y26"
        For i = 1 To Len(w1)
            w2 = LCase$(Mid$(w1, i, 1))
            Select Case w2
            Case "x": k = 0
            Case "y": k = 1
            Case "z": k = 2
            Case Else
                x(k) = x(k) + w2
            End Select
        Next
        Debug.Print "x=" & x(0) & "; y=" & x(1) & "; z=" & x(2)
    End Sub
      

  3.   

    Dim strC As StringstrC = UCase("y26X475Z1.1")MsgBox "X=" & Val(Mid(strC, InStr(strC, "X") + 1)) & "; Y=" & Val(Mid(strC, InStr(strC, "Y") + 1)) & "; Z=" & Val(Mid(strC, InStr(strC, "Z") + 1))