Как проверить и удалить пробел в VBA Excel - PullRequest
0 голосов
/ 25 января 2019

Я очень новичок в 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

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Ниже приведен код, который работает для меня.

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   
0 голосов
/ 25 января 2019

Есть 2 способа, и каждый может комбинировать оба способа, чтобы получить нужные обрезанные строки:

  1. Заменить все пробелы.Поскольку адрес электронной почты не может содержать пробелов нигде (ни в конце, ни между ними). ​​
  2. Пользовательский UDF, использующий регулярное выражение для удаления всех видов пробелов.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...