VBA Msgbox - 无默认按钮

4
我想知道在VBA(Excel 2007)中是否可以显示Msgbox,而不设置默认按钮? 我有一个是/否按钮,我不希望用户按回车键或空格键并意外触发默认按钮。 有人知道是否可以实现这一点,以便我的表单上的任何按钮都不设置为默认,强制用户点击是或否?
If MsgBox("Message goes here", vbYesNo + vbQuestion ) = vbYes Then
    'Something
Else
    'Else
End If
3个回答

9

除了使用用户窗体或捕获EnterSpace等方法外,另一个解决方法是:

  1. 添加第三个无效选项按钮
  2. 将此按钮设置为默认选项
  3. 如果选择了此选项,则继续显示消息框

代码

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

1
谢谢。我采用了这种方法,并最终添加了一个取消按钮,效果也很好。 - Eddie
1
那么这就是被接受的答案。顺便说一句,@brettdj 的想法不错。 - kolcinx

2
抱歉,这是不可能的。
一个(不特别好的)解决方法是使用用户窗体编写消息框。鉴于您需要维护额外的代码而获得的好处不大,这可能不值得做。

我早就想到了。是的,如果不是绝对必要,使用UserForm是过度设计。谢谢。 - Eddie

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接