2017-03-29 53 views
0

我有以下宏顯示一個消息框,用戶滾動:而消息框運行

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

回答

2

沒有一個application.MessageBox功能只是MSGBOX,但你可以創建一個看起來像一個MsgBox形式和ShowModal屬性設置爲False

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