2011-01-26 100 views
4

匹配简单数字模式如何检查字符串是一位数字还是两位数字,否则返回false如何在VBA中使用RegEx

+2

你可以用VBA做这样的工作LIKE:Bool =数字像“#”或数字像“##” – 2011-01-27 08:37:06

+0

@ charles你可以把这个答案请 – 2011-01-27 16:23:31

+0

任何人有正则表达式的麻烦,我发现这个工具是非常有用的。 http://gskinner.com/RegExr/ – 2011-03-29 09:43:41

回答

8

如何:

Function OneOrTwo(i As Integer) As Boolean 
Dim objRegEx As Object 
Set objRegEx = CreateObject("VBScript.RegExp") 
objRegEx.IgnoreCase = True 
objRegEx.Global = True 

objRegEx.Pattern = "^\d{1,2}$" 

OneOrTwo = objRegEx.Test(i) 
End Function 

参见:http://msdn.microsoft.com/en-us/library/ms974570.aspx

1
IF CInt(myNumberString) < 100 Then 
    MsgBox "String must be either 1 or 2 digits" 
Else 
    Msgbox "Failed" 
End IF 

应该为你工作。

0

这是我会尝试。/d代表数字,?对于选项2数字。

/d/d?

/d {1,2}

7

你也可以做到这一点使用VBA LIKE:

Function OneOrTwo(Digits As Variant) As Boolean 
    OneOrTwo = Digits Like "#" Or Digits Like "##" 
End Function 
1

Remo你说得对。这里是一个RegexContains函数,所以你可以使用它的各种模式,而不仅仅是你现在需要的模式。

Function RegexContains(ByVal find_in As String, _ 
         ByVal find_what As String, _ 
         Optional IgnoreCase As Boolean = False) As Boolean 

Dim RE As Object 
Set RE = CreateObject("vbscript.regexp") 

RE.Pattern = find_what 
RE.IgnoreCase = IgnoreCase 
RE.Global = True 
RegexContains = RE.Test(find_in) 

End Function 

继从Remou的例子,假设细胞是A1,你会写:

= RegexContains(A1, “^ \ d {1,2} $”)