Применить изменения шрифта к Расширенному окну сообщений - PullRequest
0 голосов
/ 12 января 2020

Рено Бомпюи собрал отличный код . Я хочу внести изменения шрифта (например, полужирный) в поле результата в формате Dialog.RichText.

Я пытаюсь получить результат CaptureEmail, который будет выделен жирным шрифтом. Коробка просто делает CaptureEmail жирным шрифтом. Значение не отображается. Если я удалю <strong> из кода, появится электронное письмо, но не жирным шрифтом.

Private Sub Other_Email_BeforeUpdate(Cancel As Integer)
  ' https://www.devhut.net/2016/08/18/validate-e-mail-addresses/

Dim ClickResult As VbMsgBoxResultEx
Dim CaptureEmail
Dim html
CaptureEmail = Me.Other_Email

If CaptureEmail = 0 Then
    Exit Sub
ElseIf CaptureEmail > 0 Then
    If ValidateEmail(Me.Other_Email) = False Then

        ClickResult = Dialog.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?", _
          vbYesNo + vbCritical, "Invalid Entry", , , 0, False, False, False)
        If (ClickResult = vbYes) Then
            Cancel = True
        ElseIf (ClickResult = vbNo) Then
            Exit Sub
        End If
    ElseIf ValidateEmail(Me.Other_Email) = True Then
        Exit Sub
    End If
End If
End Sub

Ответы [ 2 ]

1 голос
/ 12 января 2020

Основная проблема в вашем коде - это конкатенация первого аргумента, предоставленного методу 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, вы не выполняете никаких действий.

0 голосов
/ 12 января 2020

Надеюсь, я правильно понял, и это помогает, вы хотите: "Хотели бы вы перепроверить это перед добавлением?" быть также жирным шрифтом.

Затем вам нужно заключить в теги одно и то же между тегами <strong></strong>

Таким же образом [CaptureEmail] находится между этими тегами в вашем коде

...