我意识到这段代码并不是非常混乱,所以它可能没有必要,但是可以压缩这些行
Select Case True
Case Info.Feed Like "F#" Or Info.Feed Like "F##" Or Info.Feed like "F###"
'stuff; Info is a class variable
Case Else
'there are more cases but this is all I need to keep things clear
End Select
进入没有Or
的东西?告诉Excel,当我说#时,这并不意味着一位数字?
答案 0 :(得分:3)
Info.Feed like "F*" And isnumeric(mid(Info.Feed,2))
这会抓住
F01
F100
F99999
但会忽略
F
FX
FX01
F01A
A01
如果要将其限制为F000到F999,请添加LEN
答案 1 :(得分:3)
如果您正在使用Like
运算符并达到其限制,那么您可以非常简洁地在VBA中使用正则表达式。在您使用F*
的情况下,我会假设您不需要FXXX
和F12X
等。
F#,F ##和F ###都说F后跟1到3位数,可以在一个正则表达式中完成:
^F\d{1,3}$
哪个是字符串的开头,F
,1-3个数字,字符串的结尾。
代码:
Option Explicit
Public Sub Test()
Dim objRegex As Object
Dim InfoFeed As String: InfoFeed = "F123x"
Set objRegex = CreateObject("VBScript.RegExp")
objRegex.Pattern = "^F\d{1,3}$"
If objRegex.Test(InfoFeed) Then
Debug.Print "Do stuff"
Else
Debug.Print "Do other stuff"
End If
End Sub
答案 2 :(得分:1)
like "F*"
或许可以使用AND len(x)<=4
,或者只是left(info.feed,1)="F"
,如果它不依赖于长度。