1山憨、MsgBox(msg, vbYesNo)的應(yīng)用,當(dāng)你激活了一個彈出對話框時冕末,指明了一個操作事項萍歉,要求你看到了提示后侣颂,必須做出一個選擇档桃,操作才能繼續(xù)下去,指令才能最終是否激活憔晒,都在于你的選擇藻肄,這種提示是非常重要的蔑舞,否則就不會彈出要求您對下一步必須有一種選擇。
A示例:Private Sub 確定3_Click()
Dim msg As String? '定義MSG為String嘹屯,否則出錯
? msg = "當(dāng)前打開一個重要批處理窗口,如果您操作將會有損壞電腦上的文件" & vbCrLf & _
? "? " & vbCrLf & _
???"如果您確定,請選擇“是”攻询!"& vbCrLf & _
"? " & vbCrLf& _
???????"如果您操作錯誤,請選擇“否”"
‘如果提示的信息太長,可用vbCrLf & _這種形式來轉(zhuǎn)行。
‘用" " &vbCrLf & _來空一行,好讓操作者能夠看清提示信息
?If MsgBox(msg, vbYesNo) =vbNo Then?? '選擇NO就退出州弟,否則就執(zhí)行Else下面的命令
? ?MsgBox "您選擇了取消操作,您很明智!"? ''判斷后彈出提示信息
? ?????ExitSub
‘If MsgBox(msg, vbYesNo) = vbNo Then是一種語法,這里為什么在前面彈出消息后,為什么不把vbNo寫成默認的vbYes呢?這是因為一個重要的選擇就是不要選擇钧栖,避免操作后帶來不好的結(jié)果。
‘當(dāng)然也可以在前面彈出消息后,要求選擇操作,就可以把vbNo寫成默認的vbYes婆翔,這樣只要選擇了“是”拯杠,就開始執(zhí)行了。點了“否”就可以轉(zhuǎn)到退出的語句了啃奴。
‘不管哪種方法潭陪,結(jié)果都一樣,不一樣的就是后面的指令該怎樣去設(shè)計了最蕾,這是要思考的問題依溯,也是設(shè)計的方式,根據(jù)設(shè)計目的來采用執(zhí)行指令的先后順序瘟则。
最后建議采用If MsgBox(msg, vbYesNo) = vbNo Then方式黎炉。
?Else
?MsgBox "您選擇了操作,!也明白自己要做什么了"? ''判斷后彈出提示信息
?DoCmd.OpenForm "執(zhí)行批處理"?? '打開<執(zhí)行批處理>窗體
?EndIf
End Sub
效果如下:
點擊“否”后,就直接退出了醋拧。為了講解方便拜隧,我們用一個對話框來做示范,實際運用中趁仙,是不需要這個對話框的洪添,而是直接退出了。
如果點擊“是”后雀费,就開始執(zhí)行下面的指令了干奢。
這里也為了講解方便,我們用一個對話框來做示范盏袄,實際運用中忿峻,是不需要這個對話框的,而是執(zhí)行指令了辕羽。
彈出的最終指令窗體逛尚。
B示例: Private Sub 報表1_Click()
On Error Resume Next '通俗來講,是忽略錯誤處理(防錯誤處理)刁愿,也就是有錯誤了绰寞,不彈出編碼調(diào)試窗口,而進入到代碼書寫或者改寫里面,從而防止別人修改滤钱。
DoCmd.OpenReport "網(wǎng)絡(luò)數(shù)據(jù)",
acViewPreview, "", "", acNormal '執(zhí)行打開報表預(yù)覽
?msg= "如果您選擇打印機打印數(shù)據(jù),請選擇“是”觉壶!" & vbCrLf & _
???????"?" & vbCrLf &_
???????"如果您只想預(yù)覽數(shù)據(jù),請選擇“否”"
? ?If MsgBox(msg, vbYesNo) = vbYes Then '通俗來講,如果前面選擇“是”件缸,那么就往下執(zhí)行铜靶。前面選擇“否”,就不往下執(zhí)行
Cancel = True '通俗來講他炊,表示選擇正確(真)争剿,就直接執(zhí)行下面的指令,如果選擇不正確(假)痊末,就不執(zhí)行指令秒梅,只是打印預(yù)覽。
DoCmd.RunCommand acCmdPrint '開始執(zhí)行打印
End If
End Sub
運行效果如下:
點擊“否”后舌胶,就直接進行預(yù)覽報表捆蜀。
點擊“是”,就進入執(zhí)行打印報表程序了幔嫂。
進入了打印對話過程了辆它。
今天的消息就講到這,明天再繼續(xù)往下講履恩。