正規表現を利用して文字列がメールアドレスの形式になっているか確認する。
正規表現で指定の文字列がメールアドレスの形式になっているかを確認します。
VBAで正規表現を利用するにはRegExpオブジェクトを利用します。
サンプルコードではRegExpオブジェクトのTestメソッドを利用して指定の文字列がメールアドレスの形式になっているかを確認し、その結果を返しています。
サンプルコードではケース1、2がメールアドレスの形式、3、4がメールアドレスの形式ではない文字列を確認しています。
'******************************************************************
' 文字列がメールアドレスの形式になっているか確認する
'******************************************************************
Sub Main_ChkMail()
Dim sChkMailAdrs As String
'ケース1
sChkMailAdrs = "vba-samples1234@gmail.com"
Debug.Print "「" & sChkMailAdrs & "」は" & runRegExpMail(sChkMailAdrs)
'ケース2
sChkMailAdrs = "vba_samples1234@yahoo.co.jp"
Debug.Print "「" & sChkMailAdrs & "」は" & runRegExpMail(sChkMailAdrs)
'ケース3
sChkMailAdrs = "vba@samples@gmail.com"
Debug.Print "「" & sChkMailAdrs & "」は" & runRegExpMail(sChkMailAdrs)
'ケース4
sChkMailAdrs = "abcd@com"
Debug.Print "「" & sChkMailAdrs & "」は" & runRegExpMail(sChkMailAdrs)
End Sub
'******************************************************************
' 正規表現で値がメールアドレスの形式かチェックする
'------------------------------------------------------------------
' 第1引数:検査対象の文字列
'------------------------------------------------------------------
' 戻り値 :確認結果の文字列
'******************************************************************
Function runRegExpMail(getVal As Variant) As String
' メールアドレス形式の正規表現
Dim sPattern As String
sPattern = "^[a-zA-Z0-9]+([a-zA-Z0-9\._-]){0,63}@[a-zA-Z0-9-]+\.(?:[\.a-zA-Z0-9-]+)*$"
Dim oReg As Object
Set oReg = CreateObject("VBScript.RegExp")
oReg.Pattern = sPattern '検索するパターンを設定
oReg.IgnoreCase = True '大文字と小文字を区別(True:しない、Flase:する)
oReg.Global = True '文字列全体を検索(True:する、Flase:しない)
If oReg.Test(getVal) Then
runRegExpMail = "メールアドレスの形式です"
Else
runRegExpMail = "メールアドレスの形式ではありません"
End If
Set oReg = Nothing
End Function■実行結果



