Visual Basic 和 VBS 中的函數(shù),可實(shí)現(xiàn)彈出窗口.
作用:在對(duì)話框中顯示消息,等待用戶單擊按鈕,并返回一個(gè) Integer 告訴用戶單擊哪一個(gè)按鈕。
語(yǔ)法:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
參數(shù)說(shuō)明:
MsgBox 函數(shù)的語(yǔ)法具有以下幾個(gè)命名參數(shù):
Prompt-------必需的。字符串表達(dá)式,作為顯示在對(duì)話框中的消息。prompt 的最大長(zhǎng)度大約為 1024 個(gè)字符,由所用字符的寬度決定。如果 prompt 的內(nèi)容超過(guò)一行,則可以在每一行之間用回車符 (Chr(13))、換行符 (Chr(10)) 或是回車與換行符的組合 (Chr(13) & Chr(10)) 將各行分隔開(kāi)來(lái)。
Buttons-------可選的。數(shù)值表達(dá)式是值的總和,指定顯示按鈕的數(shù)目及形式,使用的圖標(biāo)樣式,缺省按鈕是什么以及消息框的強(qiáng)制回應(yīng)等。如果省略,則 buttons 的缺省值為 0。
Title-------可選的。在對(duì)話框標(biāo)題欄中顯示的字符串表達(dá)式。如果省略 title,則將應(yīng)用程序名放在標(biāo)題欄中。
Helpfile--------可選的。字符串表達(dá)式,識(shí)別用來(lái)向?qū)υ捒蛱峁┥舷挛南嚓P(guān)幫助的幫助文件。如果提供了 helpfile,則也必須提供 context。
Context-------可選的。數(shù)值表達(dá)式,由幫助文件的作者指定給適當(dāng)?shù)膸椭黝}的幫助上下文編號(hào)。如果提供了 context,則也必須提供 helpfile。
用于MsgBox函數(shù)中Buttons參數(shù)的常量
常量值 說(shuō)明
vbOKOnly 0 只顯示“確定”按鈕(缺省值)
VbOKCancel 1 顯示“確定”和“取消”按鈕
VbAbortRetryIgnore 2 顯示“終止”、“重試”和“忽略” 按鈕
VbYesNoCancel 3 顯示“是”、“否”和“取消”按鈕
VbYesNo 4 顯示“是”和“否”按鈕
VbRetryCancel 5 顯示“重試”和“取消”按鈕
VbCritical 16 顯示“關(guān)鍵信息”圖標(biāo)
VbQuestion 32 顯示“警告詢問(wèn)”圖標(biāo)
VbExclamation 48 顯示“警告消息”圖標(biāo)
VbInformation 64 顯示“通知消息”圖標(biāo)
vbDefaultButton1 0 第一個(gè)按鈕是缺省值(缺省設(shè)置)
vbDefaultButton2 256 第二個(gè)按鈕是缺省值
vbDefaultButton3 512 第三個(gè)按鈕是缺省值
vbDefaultButton4 768 第四個(gè)按鈕是缺省值
vbApplicationModal 0 應(yīng)用程序強(qiáng)制返回;應(yīng)用程序一直被掛起,直到用戶對(duì)消息框
作出響應(yīng)才繼續(xù)工作
vbSystemModal 4096 系統(tǒng)強(qiáng)制返回;全部應(yīng)用程序都被掛起,直到用戶對(duì)消息框作
出響應(yīng)才繼續(xù)工作
vbMsgBoxHelpButt 16384 將Help按鈕添加到消息框
on
VbMsgBoxSetFore 65536 指定消息框窗口作為前景窗口
ground
vbMsgBoxRight 524288 文本為右對(duì)齊
vbMsgBoxRtlRe 1048576 指定文本應(yīng)為在希伯來(lái)和阿拉伯語(yǔ)系統(tǒng)中的從右到左顯示
ading
說(shuō)明:
(1)第一組值(0–5)描述了消息框中顯示的按鈕的類型與數(shù)目;第二組值(16,32,48,64)描述了圖標(biāo)的樣式;第三組值(0,256,512,768)說(shuō)明哪一個(gè)按鈕是缺省值;而第四組值(0,4096)則決定消息框的強(qiáng)制返回性。將這些數(shù)字相加以生成Buttons參數(shù)值的時(shí)候,只能由每組值取用一個(gè)數(shù)字。
(2)這些常數(shù)都是 Visual Basic for Applications (VBA) 指定的。結(jié)果,可以在程序代碼中到處使用這些常數(shù)名稱,而不必使用實(shí)際數(shù)值。實(shí)際數(shù)值與常數(shù)名稱是等價(jià)的。
返回值
用于MsgBox函數(shù)返回值的常量
常數(shù)值 說(shuō)明
vbOK 1 確定
vbCancel 2 取消
vbAbort 3 終止
vbRetry 4 重試
vbIgnore 5 忽略
vbYes 6 是
vbNo 7 否
(1) 如果同時(shí)提供了Helpfile與Context參數(shù),可以按F1鍵來(lái)查看與Context相應(yīng)的幫助主題,Excel通常會(huì)在輸入框中自動(dòng)添加一個(gè)幫助(Help)按鈕。
(2)若在消息框中顯示“取消”按鈕,則按下ESC鍵與單擊“取消”按鈕效果相同。若消息框中有“幫助”按鈕,則提供相關(guān)的幫助信息。
(3)如果要輸入多個(gè)參數(shù)并省略中間的某些參數(shù),則必須在相應(yīng)位置加入逗號(hào)分界符。
示例
(1)(1)使用 MsgBox 函數(shù),在具有“是”及“否”按鈕的對(duì)話框中顯示一條嚴(yán)重錯(cuò)誤信息。示例中的缺省按鈕為“否”,MsgBox函數(shù)的返回值視用戶按哪一個(gè)鈕而定。并假設(shè)DEMO.HLP為一幫助文件,其中有一個(gè)幫助主題代碼為1000。
Dim Msg,Style,Title,Help,Ctxt,Response,MyString
Msg="Do you want to continue ?" ’定義消息文本
Style = vbYesNo + vbCritical + vbDefaultButton2 ' 定義按鈕
Title = "MsgBox Demonstration" ' 定義標(biāo)題文本
Help = "DEMO.HLP" ' 定義幫助文件
Ctxt = 1000 ' 定義幫助主題
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' 用戶按下“是”
MyString = "Yes" ' 完成某操作
Else ' 用戶按下“否”
MyString = "No" ' 完成某操作
End If
(2)只顯示某消息
MsgBox “Hello!”
(3)將消息框返回的結(jié)果賦值給變量
Ans=MsgBox(“Continue?”,vbYesNo)
If MsgBox(“Continue?”,vbYesNo)<>vbYes Then Exit Sub
(4)使用常量的組合,賦值組Config變量,并設(shè)置第二個(gè)按鈕為缺省按鈕
Config=vbYesNo+vbQuestion+vbDefaultButton2
(5)若要在消息中強(qiáng)制換行,可在文本中使用vbCrLf(或vbNewLine)常量,用&(或+)加空格與字符隔開(kāi)。如
MsgBox “This is the first line.” & vbNewLine & “Second line.”
(6)可以在消息框中使用vbTab常量插入一個(gè)制表符。下面的過(guò)程使用一個(gè)消息框來(lái)顯示5×5單元格區(qū)域中的所有值,用vbTab常量分隔列并使用vbCrLf常量插入一個(gè)新行。注意在MsgBox函數(shù)最多只顯示1024個(gè)字符,因此限制了可顯示的單元格數(shù)。
Option Explicit
Sub ShowRangeValue()
Dim Msg As String
Dim r As Integer, c As Integer
Msg = ""
For r = 1 To 5
For c = 1 To 5
Msg = Msg & Cells(r, c) & vbTab
Next c
Msg = Msg & vbCrLf
Next r
MsgBox Msg
End Sub
(7)在消息框語(yǔ)句中運(yùn)用工作表函數(shù)以及設(shè)置顯示的數(shù)置格式,如下面語(yǔ)句所示:
MsgBox " selection has " & m & " cells ." & Chr(13) & " the sum is :" & Application.WorksheetFunction.Sum(Selection) & Chr(13) & "the average is :" & Format(Application.WorksheetFunction.Average(Selection), "#,##0.00"), vbInformation, "selection count & sum & average" & Chr(13)
例
private sub form_load() '事件窗體加載
msgbox("彈出窗口") '設(shè)定彈出窗口
end sub '