
使用 VBA 時,我們可以呼叫 MsgBox 函數顯示訊息視窗,傳遞訊息給使用者。同時, MsgBox 函數會根據使用者點擊的按鈕,回傳相對應的整數值。我們可以依據回傳值,執行相對應的程式。本篇文章說明 MsgBox 如何使用以及範例分享。Microsoft MsgBox 說明
內容目錄
MsgBox 訊息視窗的組成說明
MsgBox 訊息視窗組成如下:

- 標題:顯示訊息視窗的標題名稱。如果沒有輸入標題,預設顯示 “Microsoft Excel”
- 訊息提示區:這是訊息顯示的地方,可以顯示多行訊息,換行方法請參考 3 個實用的 VBA MsgBox 換行方法
- 按鈕:”確定”是預設按鈕,另外我們也可以顯示 [是/否] 、 [是/否/取消] 等
- 關閉圖示:關閉訊息視窗
MsgBox 語法說明
MsgBox 語法如下:
MsgBox( prompt, [ buttons ], [ title ], [ helpfile, context ] )
備註: 只有 prompt 為必填引數,中括號皆為選填引數
- prompt – 這是必填的引數,用途是輸入訊息,顯示在”訊息提示區”。上圖範例中,“這是 MsgBox 的訊息視窗”是我們輸入的訊息,顯示在”訊息提示區”。prompt 最多可以輸入 1024 個字元
- [ buttons ] – 這是選填的引數,用途是指定訊息視窗要顯示的按鈕。預設為 vbOKOnly,訊息視窗只會顯示 [確定] 按鈕。後面會再詳細說明各按鈕的使用方法及範例
- [ title ] – 這是選填的引數,用途是指定要顯示的標題名稱。預設顯示 “Microsoft Excel”
- [ helpfile ] – 這是選填的引數,用途是當使用者點擊幫助按鈕時,顯示指定的”說明檔案”。這只有在 [ buttons ] 輸入 “vbInformation” 時,才需要填入該引數。當我們輸入 [ helpfile ] 引數,也必須填入 [ context ] 引數
- [ context ] – 這是選填的引數,用途是指定”說明檔案”的”說明內容”
備註: [ helpfile ], [ context ] 都非常少見,我們可以先忽略
MsgBox 修改標題及輸入訊息 | 使用說明及範例
使用 MsgBox 函數時,我們可以自定義標題及訊息
修改標題
範例如下:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text,,"修改標題"
End Sub

輸入資訊
範例如下:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text
End Sub

MsgBox 常數 | 使用說明及範例
接下來,介紹按鈕常數及圖示常數
按鈕常數
下表為 MsgBox 按鈕常數及說明
按鈕常數 | 說明 |
---|---|
vbOKOnly | 只顯示 [確定] 按鈕 |
vbOKCancel | 顯示 [確定] 與 [取消] 按鈕 |
vbAbortRetryIgnore | 顯示 [中止]、[重試] 和 [略過] 按鈕 |
vbYesNoCancel | 顯示 [是]、[否] 和 [取消] 按鈕 |
vbYesNo | 顯示 [是] 和 [否] 按鈕 |
vbRetryCancel | 顯示 [重試] 和 [取消] 按鈕 |
vbMsgBoxHelpButton | 新增說明訊息方塊的按鈕 |
vbDefaultButton1 | 設定第 1 個按鈕為預設值。更改數字就可以更改預設值按鈕,比如 vbDefaultButton2 是設定第 2 個按鈕為預設值 |
由於每個按鈕都會回傳相對應的整數值,我們可以根據回傳值,執行指定的程式,後續會再說明這部分。我們先介紹如何讓 MsgBox 函數顯示不同按鈕及外觀。
vbOKOnly
如果我們只有輸入 prompt ,系統會預設使用 vbOKOnly,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text
End Sub

vbOKCancel
vbOKCancel 常數會顯示 [確定] 與 [取消] 按鈕,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbOKCancel
End Sub

vbAbortRetryIgnore
vbAbortRetryIgnore 常數會顯示 [中止]、[重試] 和 [略過] 按鈕,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbAbortRetryIgnore
End Sub

vbYesNo
vbYesNo 常數會顯示 [是] 和 [否] 按鈕,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbYesNo
End Sub

vbRetryCancel
vbRetryCancel 常數會顯示 [重試] 和 [取消] 按鈕,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbRetryCancel
End Sub

vbMsgBoxHelpButton
vbMsgBoxHelpButton 常數會新增 [說明] 訊息方塊,我們可以搭配其他按鈕常數一起使用,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbMsgBoxHelpButton + vbOKCancel
End Sub

vbDefaultButton2
多數情況下,最左邊的按鈕為預設值。簡單的說,當訊息視窗出現時,我們直接按 Enter ,系統會自動執行預設按鈕。以下範例中,我們輸入 vbDefaultButton2 ,將預設按鈕設定為第 2 個:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbMsgBoxHelpButton + vbOKCancel + vbDefaultButton2
End Sub

圖示常數
下表為 MsgBox 圖示常數及說明
圖示常數 | 說明 |
---|---|
vbCritical | 顯示紅色叉號警告訊息圖示 |
vbQuestion | 顯示藍色問號訊息圖示 |
vbExclamation | 顯示黃色驚嘆號訊息圖示 |
vbInformation | 顯示藍色資訊訊息圖示 |
vbCritical
vbCritical 常數會顯示紅色叉號警告訊息圖示,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbCritical
End Sub

vbQuestion
vbQuestion 常數會顯示藍色問號訊息圖示,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbQuestion
End Sub

vbExclamation
vbExclamation 常數會顯示黃色驚嘆號訊息圖示,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbExclamation
End Sub

vbInformation
vbInformation 常數會顯示藍色資訊訊息圖示,程式碼及圖示如下範例:
Sub msgbox_usage()
Dim text As String
text = "這是 MsgBox 的訊息視窗"
MsgBox text, vbInformation
End Sub

MsgBox 按鈕數值回傳 | 使用說明及範例
MsgBox 函數的每個按鈕,都對應一個整數值。當使用者點擊按鈕,我們可以利用 If Statement 或是 Select Case Statement,判斷 MsgBox 回傳值,執行後續對應的程式。
按鈕 | 回傳值 |
---|---|
確定 | 1 |
取消 | 2 |
中止 | 3 |
重試 | 4 |
忽略 | 5 |
是 | 6 |
否 | 7 |
下面的範例,我們目的是依據使用者的點擊選項,回傳相對應的訊息。當使用者點擊 [是] ,訊息視窗回傳 “你點擊 [是] “;如果使用者點擊 [否] ,訊息視窗回傳 “你點擊 [否] “。
Sub msgbox_result()
Dim text As String
Dim result As Byte
text = "請點擊 [是] 或 [否]"
result = MsgBox (text, vbYesNo + vbQuestion)
If result = 6 Then
text = "你點擊 [是]"
ElseIf result = 7 Then
text = "你點擊 [否]"
End If
MsgBox text
End Sub
- 我們建立 result 變數,並賦予 MsgBox 函數的回傳值
- 當使用者點擊 [是] ,MsgBox 回傳 6 給 result 變數;當使用者點擊 [否] ,MsgBox 回傳 7 給 result 變數
- 使用 If Statement 判斷 result 的值。如果 result 是 6 , text 變數為 “你點擊 [是]”;如果 result 是 7,text 變數為 “你點擊 [否]”
- 呼叫 MsgBox 函數顯示 text 變數

如果本篇文章有幫助到你,請在下方拍手圖示按 5 下。只要花幾秒鐘登入 Google 或 FB 帳號,不需任何花費就能提供我實質的回饋,支持我繼續創作,謝謝