我在一个单元格中有一个字符串,可以说它说“客户端引用: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