Основная проблема в вашем коде - это конкатенация первого аргумента, предоставленного методу RichBox
:
"The inputted e-mail " & <strong>[CaptureEmail]</strong> & " does not appear to be a valid Email_Address. " & "<p/>" & _
"Would you like to recheck it before adding it?"
Поскольку <strong>
& </strong>
являются литеральными строками, они должны быть включены как часть содержимого строк, которые заключены в двойные кавычки, например:
"The inputted e-mail <strong>" & CaptureEmail & "</strong> does not appear to be a valid Email_Address. "
У вас также есть некоторые искаженные HTML здесь:
"<p/>"
Предположительно, это должно быть :
"<p>The inputted e-mail <strong>" & CaptureEmail & "</strong> does not appear to be a valid Email_Address.</p>" & _
"<p>Would you like to recheck it before adding it?</p>"
Вы также, кажется, смешиваете типы данных -
Вы изначально присваиваете значение элемента управления формы Other_Email
вашей переменной CaptureEmail
:
CaptureEmail = Me.Other_Email
И тогда вы воспринимаете CaptureEmail
как целое число:
If CaptureEmail = 0 Then
Exit Sub
ElseIf CaptureEmail > 0 Then
Однако, исходя из содержимого окна сообщения, это будет означать, что CaptureEmail
на самом деле содержит строку:
Введенный адрес электронной почты "& CaptureEmail &" не является действительным адресом электронной почты.
Несколько других замечаний по поводу вашего кода:
If CaptureEmail = 0 Then
Exit Sub
ElseIf CaptureEmail > 0 Then
Учитывая, что вы можете продолжить, только если CaptureEmail
больше нуля требуется только проверка:
If CaptureEmail > 0 Then
...
End If
Аналогично, позже в коде у вас есть следующее:
If ValidateEmail(Me.Other_Email) = False Then
...
ElseIf ValidateEmail(Me.Other_Email) = True Then
Exit Sub
End If
Поскольку ValidateEmail
возвращает логическое значение только с двумя возможные значения, нет необходимости проверять оба, так как если возвращаемое значение не равно False
, то оно должно быть True
и наоборот.
Таким образом, код может стать:
If Not ValidateEmail(Me.Other_Email) Then
...
End If
Здесь можно применить те же логики c:
If (ClickResult = vbYes) Then
Cancel = True
ElseIf (ClickResult = vbNo) Then
Exit Sub
End If
Поскольку для любого результата, кроме vbYes
, вы не выполняете никаких действий.