2010-07-15 33 views
2

如果給定的Excel單元格的內容與特定的正則表達式匹配,那麼VBA有什麼好的檢查機制?VBA正則表達式問題

在我的情況,我想知道,如果一些小區的格式

m 
m2 
m1234 

事實上,這只是一個開頭字母的定義,其次是沒有指定的數字量。

我該如何將它放入If-Else構造中?

If Doc.Cells(1,1).Value ..... ??? 

映入眼簾,poeschlorn

回答

5

您可以通過工具 - >引用的VBScript的RegExp對象得到&加入「微軟的VBScript正則表達式5.5」

另外一個快速的方法來做到這一點,如果你不需要檢查後續的信在`m1234X1是:

if Doc.Cells(1,1).Value like "[a-zA-Z]#*" then ...

(這不需要任何東西的引用)

+0

我沒有VB可以做RegEx。很高興知道。 – 2010-07-15 15:46:46

+0

只是另一個問題...我如何檢查,如果我的字符串匹配像「abc_123」或「abc123」(其中「abc」總是在開頭?)的正則表達式? – poeschlorn 2010-07-19 13:21:43

0

我不知道VBA,但正則表達式[a-zA-Z][0-9]*也許能夠滿足你想要什麼。

+0

嗨,看起來不錯,但他只識別「m2」或「m10」,也不是「m」...... – poeschlorn 2010-07-15 13:51:41

+0

它應該匹配'm'。 – 2010-07-15 13:54:18

+0

以一種奇怪的方式不是... [mM] [0-9] *只給m12,m1,m10 – poeschlorn 2010-07-16 06:50:59

0

這是我RegexContains功能。將它傳遞給單元格和模式,如果它包含或不包含,它將返回TRUE或FALSE。現在

​​

,我不知道你想在你的榜樣準確地找到,但如果你想知道,如果單元格中包含一個字母后跟一個或多個字母,那麼你可以使用(假設該細胞是A1):= RegexContains(A1, 「^ \ W \ d +」)

  • 的^標誌着句子
  • 的\ w標記單個字母 字元(a-ZA-的開始Z)
  • \ d +標記一個或多個數字 個字符[0-9]

我希望這會有所幫助。