iT邦幫忙

DAY 24
2

Excel VBA 的眉眉角角系列 第 24

Excel VBA 的眉眉角角Day24: 使用正規表達式

在處理文字資料時,我們總會碰到各種輸入錯誤的問題,Excel中雖然有內建了各種「資料驗證」的作法,但需求總是比內建的多,例如判斷email位址是否正確,這在Excel 2003並沒有內建,此時就要出動更強大的判別方式,我們搬出了「正規表達式」來實現這個功能。

以下是我們的自訂函數:

Function fncIsMail(ByVal strEmail As String) As Boolean
    Dim objRegEx As Object
    Dim strRFC2822_3 As String
    strRFC2822_3 = "^([a-zA-Z0-9_\-\.]+)@(([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d))$"
    
    On Error GoTo ErrZone
    Set objRegEx = CreateObject("Vbscript.Regexp")
    With objRegEx
        .Pattern = strRFC2822_3
        .IgnoreCase = True
        fncIsMail = .test(strEmail)
    End With
ErrZone:
    Set objRegEx = Nothing
    If Err.Number <> 0 Then
        Debug.Print "錯誤 " & Err.Number & ": " & Err.Description
    End If
End Function

主要是使用VBscript.Regexp的函數庫來達成,透過該函數庫與模板(Pattern)判斷提供字串是否為email字串,若是的話返回True,否為False。

以下圖片為使用該函數來判斷e-mail的實際狀況,有問題的email都會變成FALSE。

參考資料:


上一篇
Excel VBA 的眉眉角角Day23:使用AutoHotKey自動跳過開啟巨集警告,以及偵測是否為AutoHotKey開啟Excel檔
下一篇
Excel VBA 的眉眉角角Day25: 控制pdf檔案產生
系列文
Excel VBA 的眉眉角角30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言