我是VBA的新手,我在网上找到了此代码,可帮助我检查输入的内容是否为电子邮件地址,但不会删除多余的空格。我不知道如何修改代码以增加空间。
我试图像这样使用Trim->'emailAddr.Value = Trim(emailAddr.Value),但这给了我错误。
感谢任何人都能提供帮助。
Private Sub Worksheet_Change(ByVal Target As Range)
For Each emailAddr In Range("D2:D100").Cells
If emailAddr.Value <> "" And Evaluate("COUNTIF(" & emailAddr.Address & ",""*@*.*"")") <> 1 Then
emailAddr.Font.Color = RGB(225, 0, 0)
Else
emailAddr.Font.Color = RGB(0, 0, 255)
emailAddr.Value = Trim(emailAddr.Value)
End If
Next emailAddr
End Sub
答案 0 :(得分:0)
有两种方法,一种可以将两种方法结合起来以获取所需的修剪后的琴弦:
emailAddr.Value = Replace(RemoveWhiteSpace(emailAddr.Value)," ",vbNullString)
emailAddr.Value = Replace(emailAddr.Value,Chr(9),vbNullString)
'Add a reference to Microsoft VBScript Regular Expressions 5.5
Public Function RemoveWhiteSpace(target As String) As String
With New RegExp
.Pattern = "\s"
.MultiLine = True
.Global = True
RemoveWhiteSpace = .Replace(target, vbNullString)
End With
End Function
答案 1 :(得分:0)
下面是对我有用的代码。
Private Sub Worksheet_Change(ByVal Target As Range)
For Each emailAddr In Range("D2:D3").Cells
Application.EnableEvents = False
emailAddr.Value = Replace(emailAddr.Value, " ", "")
Application.EnableEvents = True
If emailAddr.Value <> "" And Evaluate("COUNTIF(" & emailAddr.Address & ",""*@*.*"")") <> 1 Then
emailAddr.Font.Color = RGB(225, 0, 0)
Else
emailAddr.Font.Color = RGB(0, 0, 255)
End If
Next emailAddr
End Sub