VBAでのプログラミングにあまり慣れていません。私の目標は、1つの電子メールアドレスを含む複数の単語を含む列を持つ長いExcelファイルを持っているので、私は自分のコリージュに渡すことができるスクリプトを作成することです。例:会社のユーザー[email protected]VBAで列に電子メールが含まれているかどうかを確認する
私の正規表現はすべてのデータを通過しているので、何もフィルタリングできないようです。
Function isEmail(ByVal data As String)
Dim mailReg As Object
Set mailReg = CreateObject("VBScript.RegExp")
Dim regpattern As String
regpattern = "^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$" 'Expression ok
Dim arr1() As String
Dim element As Variant
Dim strInput As String
arr1() = Split(data, " ")
For Each element In arr1
If regpattern <> "" Then
strInput = element
With mailReg
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = regpattern
End With
MsgBox (strInput)
End If
Next element
End Function
私も
For Each element In arr1
If element Like regpattern Then
MsgBox (element)
End If
Next element
End Function
を使用しようとしました。しかし、その後何もメッセージボックスに表示されません。..
'もしregpattern <> "なぜ" Then'が - それは'もし要素であると想定されていないが、<> "" 'Then' –
このコードは混乱です。正規表現が正しくありません。あなたは何をしようとしているのですか?文字列で見つかった各メールのメッセージを表示しますか?そして 'Function'ではなく' Sub'を使います。 –
電子メールアドレスには、 "、!、#、$のような非英数字を含めることができますソース:[Wikipedia](https://en.wikipedia.org/wiki/Email_address) –