我有以下宏来向用户显示一个消息框:
Sub Messageboxtest()
Test = MsgBox("Do you want to continue", vbYesNo)
If Answer = vbYes Then
Sheets(1).Range("A2").Value = 1
Else
End If
End Sub
宏本身运作完美。但是,一旦excel屏幕上显示消息框,用户就无法再在Excel文件中向下滚动。
对于输入框,我知道有Application.InputBox
函数,但是还有类似Application.MessageBox
的内容吗?
答案 0 :(得分:2)
没有application.MessageBox函数只是MsgBox,但您可以创建一个看起来像MsgBox的表单并将ShowModal属性设置为False
答案 1 :(得分:0)
有API替代方案!在模块顶部声明此函数:
#If VBA7 Then
Public Declare PtrSafe Function ModelessMsgBox Lib "User32" Alias "MessageBoxA" (Optional ByVal hWnd As Long, _
Optional ByVal prompt As String, _
Optional ByVal title As String, _
Optional ByVal buttons As Long) As Long
#Else
Public Declare Function ModelessMsgBox Lib "User32" Alias "MessageBoxA" (Optional ByVal hWnd As Long, _
Optional ByVal prompt As String, _
Optional ByVal title As String, _
Optional ByVal buttons As Long) As Long
#End If
并像这样使用它:
Call ModelessMsgBox(prompt:="MsgBox!!!!", buttons:=vbYesNo)
然而,这个MsgBox会停止代码执行(当无模式窗体不执行时,让你使用另一个全局/静态变量的垃圾集和/或只是为了控制执行流来抑制事件),所以它可以像这样使用:
If ModelessMsgBox(prompt:="MsgBox!!!!", buttons:=vbYesNo) = vbYes Then
'do smth
Else
'do smth else
End If
更多here