【问题标题】:Apply font changes to Enhanced Message Box将字体更改应用到增强型消息框
【发布时间】:2020-01-12 01:31:45
【问题描述】:

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

【问题讨论】:

    标签: vba ms-access msgbox


    【解决方案1】:

    您的代码的主要问题是提供给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?"
    

    由于&lt;strong&gt;&lt;/strong&gt; 是文字字符串,它们应该作为双引号括起来的字符串内容的一部分,例如:

    "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 & " 似乎不是有效的 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 返回一个只有两个可能值的布尔值,因此没有必要同时测试这两个值,因为如果返回不是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 以外的任何结果,您都没有执行任何操作。

    【讨论】:

      【解决方案2】:

      我希望我理解正确并且对您有所帮助,您想要“您想在添加之前重新检查它吗?”也要大胆。

      那么你需要在标签之间封装相同的&lt;strong&gt;&lt;/strong&gt;

      [CaptureEmail] 在代码中这些标签之间的方式相同

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        • 2015-06-11
        相关资源
        最近更新 更多