VBA Msgbox-无默认按钮

VBA Msgbox-无默认按钮,vba,excel,Vba,Excel,我想知道是否可以在VBA(Excel 2007)中显示Msgbox,而不将任何按钮设置为默认值? 我有一个“是\否”按钮,我不希望用户点击回车键或空格键而意外触发默认按钮 有人知道这是否可行,这样我的表单上的两个按钮都不会设置为默认值,从而强制用户单击“是”或“否”吗 If MsgBox("Message goes here", vbYesNo + vbQuestion ) = vbYes Then 'Something Else 'Else End If 不,不幸的是,这是不

我想知道是否可以在VBA(Excel 2007)中显示Msgbox,而不将任何按钮设置为默认值? 我有一个“是\否”按钮,我不希望用户点击回车键或空格键而意外触发默认按钮

有人知道这是否可行,这样我的表单上的两个按钮都不会设置为默认值,从而强制用户单击“是”或“否”吗

If MsgBox("Message goes here", vbYesNo + vbQuestion ) = vbYes Then
    'Something
Else
    'Else
End If

不,不幸的是,这是不可能的

一个(不是特别好的)解决方法是使用UserForm对消息框进行编码。考虑到您必须维护的额外代码带来的好处,可能不值得这么做。

另一种解决方法(除了UserForm或trapping Enter&Space等)是

  • 添加无效选项的第三个按钮选项
  • 将此按钮设为默认按钮
  • 如果选中此选项,则继续显示消息框
  • 代码


    我也这么想。是的,我同意除非绝对必要,否则使用UserForm是过分的。谢谢。我确实这样做了,最后添加了一个“取消”按钮,效果也很好。所以这是一个被接受的答案。顺便说一句,好主意@brettdj
    Dim lngMsg As Long
    Do
    lngMsg = MsgBox("Message goes here (Yes or No)", vbQuestion + vbYesNoCancel + vbDefaultButton3)
    Loop While lngMsg = vbCancel
    If lngMsg = vbYes Then
    ' route a
    Else
    ' route b
    End If
    
    If MsgBox("Message goes here", vbYesNo + vbQuestion **+ vbDefaultButton2**) = vbYes Then
        'Something
    Else
        'Else
    End If