實例二:基本的對話框函數(shù)
知識點: 1、認識消息框函數(shù)MxgBox與輸入框函數(shù)InputBox;
2、什么是常量、什么是變量、申明變量的方法是什么;
3、用“&”符號連接字符串。
想想我們平時與他人談話時的形式——你提問,他回答;或是他提問,你回答。我們所編寫的程序,在與計算機進行交互的過程中,其形式也是這樣的一問一答。所以,幾乎所有的編程語言都提供有直接與計算機進行對話的函數(shù),在VBA中,這樣的最基本的函數(shù)是消息函數(shù)“MsgBox”與輸入框函數(shù)“InputBox”。
請輸入以下代碼并運行:
’’’======還有待完善的程序一=====
Sub B()
Dim X
X = inputbox("您的姓名是:")。
Msgbox( " 歡迎您" & X & "朋友!")
End Sub
注意:1、在輸入“Msgbox( " 歡迎您" & X &"朋友!")”這行代碼時,括號內(nèi)幾個字符串之間有空格,沒有輸入空格的話會出錯,出錯時,代碼將以紅色顯示。2、本程序運行時如果點“取消”按鈕,其實會出現(xiàn)問題,關(guān)于對這個問題的解決方法,將在后面討論。所以,我們先稱本程序為“還有待完善的程序”。(朋友們可以先試一下,看看會出現(xiàn)什么問題?)。
運行效果如圖2-1與圖2-2。
看到了嗎?這就是最簡單的與計算機進行對話的效果。
代碼解說:
從Sub B()到End sub就是一個完整的過程——“B”。
“InputBox("您的姓名是:")”這句代碼是顯示一個“輸入框”,請您輸入自己的姓名。這句代碼事實上就是一個計算機提問,人回答的“對話”過程。其中,“InputBox”函數(shù)的作用就是彈出一個輸入框,等待我們回答計算機的提問。
當然,我們在回答計算機時,可能填的是“老王”也可能填的是“老李”……,這個答案本身是不固定的,所以,我們將這個答案的值賦予“變量”——“X”。這下,大家可能就知道“變量”的含意了吧?在程序運行中,我們經(jīng)常會遇到值不能確定,或者是可能會發(fā)生改變的某個數(shù)據(jù),在這個時候,我們就用一個“符號”來“代替”這個可能會變化的值,這個用來代替不能確定的值的“符號”,就是“變量”。
現(xiàn)在,我們刪去本程序中的“DimX”這句后,再運行一下試試效果。怎么樣,是不是感覺不到區(qū)別?(如果程序報錯說“沒有申明變量”的話,沒有關(guān)系,請接著看下面的內(nèi)容。)在VBA語言中允許我們不申明變量就直接運用它,所以程序仍然能夠正常運行。“DimX”這句代碼中的“Dim”就是申明變量的函數(shù),“DimX”就是申明了一個名叫“X”的變量。在“X=inputbox("您的姓名是:")”這句代碼中,我們利用等號,將輸入框中取得的值賦予給了變量“X”。
雖說我們不申明變量就可以使用它,但這絕對不是個好的習慣。首先,在一些代碼較長的程序中,您能保證那些名字較長的變量在后面用到時,您不會輸錯嗎?其次,自己不申明變量,時間久了,那些較長的程序可能會連您自己也看不懂;另外,程序在訪問申明過的變量時,速度會比訪問沒有申明過的變量要快一些。
為了避免我們使用變量時出錯,我們可以在VBE編輯器菜單的工具——選項——編輯器選項卡上,選中“要求申明變量”(見下面圖2-3、2-4),這樣VBE會自動在我們每一個工程的前面加上一句“OptionExplicit”,這句代碼將檢查我們所要使用的變量是否申明,沒有申明的話就會中止程序的運行。做了上述的操作后,我們再運行去掉“Dim X”語句的過程,程序就會報“沒有申明變量”的錯誤。
關(guān)于變量,還有一些其它的知識,我們將在實例三中進行更深一步的學(xué)習,現(xiàn)在就到這吧。
“Msgbox( " 歡迎您" & X &"朋友!")”這句中的“msgBox”函數(shù),大家已不陌生,它的作用就是彈出一個消息框來(在本程序中,這個消息框就是計算機對我們輸入姓名后的回答。)。
在這個消息框所顯示的文字中包含了三個部分。字符串“歡迎您”、字符串“朋友!”和變量“X”所可能對應(yīng)的字符串“老王、老李……”等。在VBA語言中,我們使用“&”符號來連接字符串,所以我們在程序運行最后,看到的是一個像圖2-2那樣完整的歡迎語句。VBA語言中,在使用“&”連接符號時,請一定注意字符串與字符串之間有一個空格,否則程序一定會出錯。
由于MsgBox函數(shù)與InputBox函數(shù)是兩個非常常用的對話函數(shù),所以,我們再對它進行更深一步的學(xué)習。
使用MsgBox函數(shù)時的標準格式:
變量=MsgBox(”要顯示在這兒的語句”,按鈕的參數(shù),”消息框的題目”)
例子:Y=MsgBox(”歡迎您” & X &”朋友??!”,0,”這里是歡迎對話框”)
請注意格式中英文狀態(tài)下的引號、逗號與空格的使用。
使用InputBox函數(shù)時的標準格式:
變量=InputBox(“要顯示的提示文本”,” 輸入框的題目”,”輸入框中默認顯示的語句”)
例子:X= InputBox(“請輸入您的姓名”,”這里是輸入對話框”,”您的姓名請輸入到這兒?!?。
根據(jù)上面的格式,請修改本實例的程序代碼為:
’’’======還有待完善的程序二=====
Sub B()
Dim X
Dim Y
X = inputbox("您的姓名是:",” 姓名輸入框”,” 您的姓名請輸入到這兒?!?
Y = Msgbox( " 歡迎您" & X & "朋友!",0,” 這里是歡迎對話框.”)
End Sub
本段程序應(yīng)該很容易讀懂吧?運行一下,看看與前面程序的區(qū)別在什么地方?再分別把MsgBox函數(shù)的參數(shù)0替換為0、1、2、3、4、5這幾個參數(shù)并運行,看看又有什么不同?怎么樣,對話框中給出的提示是不是更豐富?下面的圖2-5與圖2-6是MsgBox函數(shù)的參數(shù)為“5”時的運行效果。(請與前面的圖2-1與圖2-2對比一下,看看到底哪些地方有了變化?)。
程序?qū)懙竭@么詳細,您是否已經(jīng)覺得它已經(jīng)很完善了呢?那么,在當程序要求您輸入您的姓名時,如果您選擇了“取消”,會有什么現(xiàn)象呢?對,“取消”按鈕同樣會向程序返回一個值。為了使用函數(shù)時更靈活一些,VBA將這些返回的值“固定”為以下的數(shù)值,這些在程序中被固定的值,就是“常數(shù)”。
MsgBox函數(shù)的常數(shù)如下:
“確定”按鈕被單擊時,返回“1”;“取消”按鈕被單擊時,返回“2”;“終止”按鈕被單擊時,返回“3”;“重試”按鈕被單擊時,返回“4”;“忽略”按鈕被單擊時,返回“5”;“是”按鈕被單擊時,返回“6”;“否”按鈕被單擊時,返回“7”。
InputBox函數(shù)在使用過程中,當人們輸入了值的時候,選擇“確定”或按下回車鍵,則返回輸入框中的內(nèi)容,輸入框中的內(nèi)容顯示不是“固定”的,也就是說它不是常數(shù);但是,如果人們在要求輸入之時選擇的是“取消”按鈕,則會返回一個值,這個值是“空值”,注意“空值”并不是“零”。所以,InputBox函數(shù)只有一個常數(shù)——“空”。
下面,我們用:如果(If)、那么(Then)、否則(else)、結(jié)束(endif)判斷語句來完善我們今天的實例。關(guān)于“If”判斷語句,不是本實例的學(xué)習重點,下節(jié)課我們將會詳細介紹它。代碼中必要的地方已添加了注釋(還記得為代碼添加注釋的方法嗎?)。
’’=============完善后的B程序===============
Sub B()
Dim X
Dim Y
X = InputBox("您的姓名是:", " 姓名輸入框", " 您的姓名請輸入到這兒。")
If X <> "" Then’如果X的值不為“空”,那么
Y = MsgBox(" 歡迎您" & X & "朋友!", 0, " 這里是歡迎對話框.")
Else’否則(即,X的值為“空”)
End If’結(jié)束
End Sub
代碼“If X<> "" Then”中的“<>”是大于與小于符號,表示“不等于”的意思。
分別運行本程序與最前面的程序,并選擇“取消”,對比一下運行的效果,從完善后的程序中——想必您不難看出“常數(shù)”在程序中的作用了吧?
請再多體會體會這本實例中的這幾個例子,您對MsgBox與InputBox這兩個函數(shù)的熟悉程度,將直接影響您后面的學(xué)習。加點油吧。
本實例的知識擴展:
1、請將本課中學(xué)到的MsgBox函數(shù)的參數(shù)分別運用到實例一中,看看效果如何。
2、請思考:哪些情況下,會使用到MsgBox函數(shù)的不同返回的值?
好了,實例二到此結(jié)束,請再回顧一遍本實例的知識點,您都掌握了嗎?是不是覺得VBA并不像想象中那么困難?如果您確信已完全掌握了前面這兩課的內(nèi)容,那么,準備接受實例三的挑戰(zhàn)吧!