我在一个单元格中有一个字符串,可以说它说“客户端引用:F123456PassPlus”。
字符串的数字前可能没有字母,数字中可能有符号,字母和数字之间可能有空格。
我只需要提取数字作为变量。我有代码可以做到这一点,但它不知道何时停止循环遍历字符串。当有数字或符号以外的东西时它应该停止,但它会继续。

IsNumber = 1
ref = ""
If branch = "" Then
    e = b
Else
    e = b + 1
End If
f = 1
While IsNumber = 1
    For intpos = 1 To 15
        ref = Mid(x, e, f)
        f = f + 1
        Select Case Asc(ref)
            Case 45 To 57
                IsNumber = 1
            Case Else
                IsNumber = 0
                Exit For
        End Select
    Next
    IsNumber = 0
Wend

任何没有定义的变量字母之前都已经定义过,e 告诉代码从哪里开始复制,x 是包含字符串的单元格。目前,一切正常,它从数字开始并复制它们并将它们构建成一个越来越大的字符串,但它只会在 intpos 达到 15 时停止。

最佳答案

在构建数字“字符串”之前,我去掉了 Asc 检查并添加了对每个字符的检查。

IsNumber = 1
ref = ""
If branch = "" Then
    e = b
Else
    e = b + 1
End If
f = 1
While IsNumber = 1
    For intpos = 1 To 15
        char = Mid(x, e + intpos, 1)
        f = f + 1
        If IsNumeric(char) Then
            ref = Mid(x, e, f)
            IsNumber = 1
        Else
            IsNumber = 0
            Exit For
        End If
    Next
    IsNumber = 0
Wend

10-06 07:53