今天我們聊聊input box 與 message 。這兩種都屬於彈跳式視窗,只是input box可以輸入一些資訊,而message box只是一些訊息視窗。

首先,我們來談談message box。除了可以顯示一些固定的訊息外,也可以帶一些變數進來,所以,也很適合利用來線是一些錯誤使用。

執行的結果如下所示。

標準語法如下:

MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])

幾個比較重要的參數如下:

prompt[必要] - 字串運算式,顯示為對話方塊中的訊息。

bottons[選用] - 指定要顯示的按鈕數目和類型、要使用的圖示樣式...等等與對話框視覺相關的設定。

比較常用的幾種參數如下:
vbOKOnly   => 僅顯示[確定]按鈕
vbOKCancel => 顯示[確定]與[取消]按鈕
vbYesNo    => 顯示[是]和[否]按鈕

預設參數是vbOKOnly,也就是只有一個按鈕,在程式設計上來說就是執行到這一行會等待按鈕的動作後再繼續執行程式。
但是如果按紐不只一個,在程式執行上就必須考慮按下不同的按紐會有不同的動作。

title[選用] - 輸入的內容會顯示在對話方塊的標題列中。

prompt 要顯示在對話框的訊息,這是唯一必要的參數,其他都可以選擇要還是不要。有一點比較特別的是如果只有使用prompt,這時MsgBox就算是一個不帶回傳值的副程式,語法範例如下:

MsgBox ("Report Done......" + CStr(k) + " / " + CStr(l) + " / " + CStr(DateDiff("s", d1, d2)) + "sec")

但是,如果參數不只一個,那這時MsgBox就被視為一個帶回傳值的函數,在與法上必須表示成一個等式,語法範例如下:

aaa = MsgBox("Report Done......" + CStr(k) + " / " + CStr(l) + " / " + CStr(DateDiff("s", d1, d2)) + "sec", vbYesNo, "EndMessage")

If aaa = vbYes Then
     MsgBox ("Yes")
Else
     MsgBox ("No")
End If

在上面的範例中,由於按鈕不只一個,所以,在程式的設計上必須考慮不同按鈕按下去的反應,以免選到沒有動作的按鈕時,會出現錯誤與衝突的訊息。

詳細的說明可以參照下面的連結:

https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/msgbox-function

 

image

說完message box,我們來談談input box,他不只有顯示訊息的功能,更重要的是它可以讓使用者輸入參數,在形式上就會是一個等式,此外,由於按鈕不只一個,所以,如同前面所說一般,在程式的設計上必須考慮不同按鈕按下去的反應,以免選到沒有動作的按鈕時,會出現錯誤與衝突的訊息。下面有一個範例,做法是當按下取消時,reg_ver也會有一個初始值,以保障程式的執行。

reg_ver = InputBox("Please input Register Version: ")
If reg_ver = "" Then
    reg_ver = "0"
End If

上面的範例只是一個做法,你也可以設計按取消按鈕就結束程式,這也是一種做法。

標準語法如下:

InputBox(prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ])

幾個比較重要的參數如下:
prompt[必要] - 顯示為對話方塊中的訊息。
title[選用] - 輸入的內容顯示在對話方塊的標題列中。
default[選用] - 若未提供其他輸入,根據預設回應,會在文字方塊中顯示字串運算式。 如果您省略 default,則顯示空的文字方塊。

詳細的說明可以參照下面的連結:

https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/inputbox-function

 

 

arrow
arrow
    文章標籤
    Exce VB input bo message bo
    全站熱搜
    創作者介紹
    創作者 月光俠 的頭像
    月光俠

    月光俠的電器行

    月光俠 發表在 痞客邦 留言(0) 人氣()