VBA MsgBox 使用說明及範例

MsgBox 用法及範例

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

MsgBox 訊息視窗的組成說明

MsgBox 訊息視窗組成如下:

msgbox_anatomy
  1. 標題:顯示訊息視窗的標題名稱。如果沒有輸入標題,預設顯示 “Microsoft Excel”
  2. 訊息提示區:這是訊息顯示的地方,可以顯示多行訊息,換行方法請參考 3 個實用的 VBA MsgBox 換行方法
  3. 按鈕:”確定”是預設按鈕,另外我們也可以顯示 [是/否] 、 [是/否/取消] 等
  4. 關閉圖示:關閉訊息視窗

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
MsgBox_title

輸入資訊

範例如下:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text
    
End Sub
MsgBox_prompt

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
vbOKOnly

vbOKCancel

vbOKCancel 常數會顯示 [確定] 與 [取消] 按鈕,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbOKCancel
    
End Sub
vbOKCancel

vbAbortRetryIgnore

vbAbortRetryIgnore 常數會顯示 [中止]、[重試] 和 [略過] 按鈕,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbAbortRetryIgnore
    
End Sub
vbAbortRetryIgnore

vbYesNo

vbYesNo 常數會顯示 [是] 和 [否] 按鈕,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbYesNo
    
End Sub
vbYesNo

vbRetryCancel

vbRetryCancel 常數會顯示 [重試] 和 [取消] 按鈕,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbRetryCancel
    
End Sub
vbRetryCancel

vbMsgBoxHelpButton

vbMsgBoxHelpButton 常數會新增 [說明] 訊息方塊,我們可以搭配其他按鈕常數一起使用,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbMsgBoxHelpButton + vbOKCancel
    
End Sub
vbMsgBoxHelpButton

vbDefaultButton2

多數情況下,最左邊的按鈕為預設值。簡單的說,當訊息視窗出現時,我們直接按 Enter ,系統會自動執行預設按鈕。以下範例中,我們輸入 vbDefaultButton2 ,將預設按鈕設定為第 2 個:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbMsgBoxHelpButton + vbOKCancel + vbDefaultButton2
    
End Sub
vbDefaultButton2

圖示常數

下表為 MsgBox 圖示常數及說明

圖示常數說明
vbCritical顯示紅色叉號警告訊息圖示
vbQuestion顯示藍色問號訊息圖示
vbExclamation顯示黃色驚嘆號訊息圖示
vbInformation顯示藍色資訊訊息圖示

vbCritical

vbCritical 常數會顯示紅色叉號警告訊息圖示,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbCritical
    
End Sub
vbCritical

vbQuestion

vbQuestion 常數會顯示藍色問號訊息圖示,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbQuestion
    
End Sub
vbQusetion

vbExclamation

vbExclamation 常數會顯示黃色驚嘆號訊息圖示,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbExclamation
    
End Sub
vbExclamation

vbInformation

vbInformation 常數會顯示藍色資訊訊息圖示,程式碼及圖示如下範例:

Sub msgbox_usage()
    Dim text As String
    
    text = "這是 MsgBox 的訊息視窗"
       
    MsgBox text, vbInformation
    
End Sub
vbInformation

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
  1. 我們建立 result 變數,並賦予 MsgBox 函數的回傳值
  2. 當使用者點擊 [是] ,MsgBox 回傳 6 給 result 變數;當使用者點擊 [否] ,MsgBox 回傳 7 給 result 變數
  3. 使用 If Statement 判斷 result 的值。如果 result 是 6 , text 變數為 “你點擊 [是]”;如果 result 是 7,text 變數為 “你點擊 [否]”
  4. 呼叫 MsgBox 函數顯示 text 變數
msgbox_return

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

發表迴響