将字体更改应用于增强消息框

Apply font changes to Enhanced Message Box

Renaud Bompuis 团结了一些 great code。我想在 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

希望我理解正确并且对您有所帮助,您也希望 "Would you like to recheck it before adding it?" 加粗。

然后你需要在标签之间封装相同的东西<strong></strong>

与 [CaptureEmail] 位于代码中这些标记之间的方式相同

您的代码的主要问题是连接提供给 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 实际上包含一个字符串:

The inputted e-mail " & CaptureEmail & " does not appear to be a valid Email_Address.


关于您的代码的一些其他观察结果:

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 return 是一个只有两个可能值的布尔值,所以没有必要同时测试这两个值,因为如果 return 不是 False,那么它必须是 True,反之亦然。

因此,代码可能会变成:

If Not ValidateEmail(Me.Other_Email) Then
    ...
End If

这里可以应用相同的逻辑:

If (ClickResult = vbYes) Then
    Cancel = True
ElseIf (ClickResult = vbNo) Then
    Exit Sub
End If

因为,对于 vbYes 以外的任何结果,您都没有执行任何操作。