求教:怎样用VB实现分析并取得其中的几个数值?

一转程序员 2013-12-24 09:56:55
字符串内容例:X475Z1.1y26
要求用一个函数计算出的结果X=475 Y=26 Z=1.1
其中的XYZ不区分大小写

写了一个循环,没想出来怎么判断结束位
    For i = 1 To Len(mStr)      '先取X

If StrComp(Mid(mStr, i, 1), X, vbTextCompare) = 0 Then
startX = i

End If

If s = EofNum Then Exit For
Next i
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2013-12-25
  • 打赏
  • 举报
回复
Dim strC As String

strC = 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))
一如既往哈 2013-12-25
  • 打赏
  • 举报
回复
你又没说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
一转程序员 2013-12-25
  • 打赏
  • 举报
回复
引用 5 楼 of123 的回复:
Dim strC As String

strC = 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))
见到大神了
一转程序员 2013-12-24
  • 打赏
  • 举报
回复
引用 1 楼 Topc008 的回复:
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
不对啊,这字符串是不确定的,而且xyz的顺序也不一定。这段程序是在字符串已知的情况下好用,在我这里不适用的
一转程序员 2013-12-24
  • 打赏
  • 举报
回复
原来是我想麻烦了,我去试试。谢谢
一如既往哈 2013-12-24
  • 打赏
  • 举报
回复
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

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧