版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流WORD VBA編程 從零開始學(xué)VBA.精品文檔.從零開始,步入Word宏編程的世界(第一講) 工作中,經(jīng)??吹皆S多朋友在使用Office時已經(jīng)非常地熟練,但仍不敢去接觸Office 的VBA編程;在網(wǎng)上Office的VBA編程論壇中,同樣看到有朋友在其中流連了相當(dāng)長的時間,但仍然不得其門而入。問一下這兩類朋友,前者覺得編程是一件很“高深”的事,自己恐怕學(xué)不會;后者為了提高自己的工作效率,雖然很想學(xué),但自己一點編程的基礎(chǔ)也沒有,照著網(wǎng)上高手們的帖子做,反而越學(xué)越糊涂。當(dāng)我問第二類朋友為什么不多看
2、看VBA的幫助文件時,“看不大懂,就像有語言障礙一樣?!彼@樣回答我。 對于第一類朋友,我想說,不要被自己想象出來的“困難”嚇倒,如果您沒有親自嘗試過,怎么知道編程會很“高深”,又怎么知道自己學(xué)不會?而第二類朋友如果能靜下心來把基礎(chǔ)知識補一補,相信您的問題也會迎刃而解。 那么,就讓我們從最基礎(chǔ)的知識開始,步入Office宏編程的世界吧。 文前的幾點說明: 1、雖說本文用到的程序在office2007與office2010中同樣可以正常運行,但
3、考慮到目前單位辦公用機的實際情況,本文所有的實例主要還是面向Office2003的用戶; 2、為了便于各位讀者理清思路,避免文章涉及面太廣,本文主要以office2003中最常用的Word為主進(jìn)行講述,有與其它Office套件相關(guān)聯(lián)的地方,將單獨說明; 3、為避免學(xué)習(xí)過程中的枯燥乏味,本文沒有像傳統(tǒng)編程教材那樣以理論知識為線索展開,而是將不同的知識點放到了幾個不同的實例之中進(jìn)行講述。所以,把每個實例“做”一遍,細(xì)心體會每個實例的知識點,將有助于您快速掌握VBA的編程技術(shù);單純地“看”,則無助于您的學(xué)
4、習(xí)。 本文的宗旨是完全面向初學(xué)者!或許您還能以此為契機叩開奔向VB60或VB.NET的大門,說不定您還能編出一、兩個病毒玩玩兒(當(dāng)然僅限于玩玩兒,千萬別做出什么傻事來!)! 好了,下面就開始我們Word的VBA編程之旅吧,愿您旅途愉快!實例一:“你好,世界!” 知識點: 1、熟悉VBE的編程界面; 2、什么是VB
5、、VBE、VBA; 3、什么是過程、工程。不要以為這些知識點有多難,讓我們一步一步地來。啟動Word,指向工具宏VB編輯器,打開VB編輯器的界面,如圖1-1。 “VB編輯器”就是VBE,VBE是Visual Basic Editing的縮寫。我們在VBE編程環(huán)境中所使用的編程語言就是“VBA”,即Visual Basic for Applications的縮寫,VBA語言是我們所熟知的VB編程
6、語言的一個子集。 VBE編輯器界面的菜單欄與工具欄就不必說了。界面左面中間部份是“工程資源管理器”所在的“工程資源管理區(qū)”,每一篇Word文檔中所編寫的程序,Word都把它看成為一個“工程”,“工程資源管理器”就是對這些工程進(jìn)行管理的地方;界面左下方是“對像屬性設(shè)置區(qū)”,我們可以對自己要用到的對像的屬性進(jìn)行設(shè)置,第四個實例中,我們將對“屬性設(shè)置”進(jìn)行詳細(xì)解說,現(xiàn)在大家不必管它;界面右面大面積空白的區(qū)域是“代碼編輯區(qū)”,我們編寫的所有代碼都放在這兒。如果看不到這個空白區(qū)域,則打開“插入”菜單,插入一個“模塊”就行了。如果“工程資源管理器
7、”已有“模塊”,則雙擊模塊名,就能打開“代碼編輯區(qū)”。 好,現(xiàn)在我們就在這個VBE環(huán)境下,利用VBA語言,來編寫我們的第一個工程(即程序)。 請在“代碼編輯區(qū)”中輸入如下的代碼:sub A ()msgbox(“你好,世界!”)end sub注意,代碼“msgbox("你好,世界!")”一句中的引號與括號為英文標(biāo)點。點擊工具欄上的黑色三角形的“播放鍵”,或按下F5鍵運行這個程序,您將看到一個彈出的消息框。如圖1-2。 代碼
8、解說: sub是VB編程中申明一個過程的語句,sub A ( )申明了一個名叫A的過程,A后面跟了一個括號,它的作用現(xiàn)在大家暫時不用管它。整段程序結(jié)尾的end sub語句,表示過程“A”在此結(jié)束。每一個程序都必需有開始與結(jié)束的標(biāo)志,所以,從Sub A ( )到End sub就構(gòu)成了一個完整的“過程”。 Msgbox是一個函數(shù),它的作用是彈出一個消息框來,它后面括號中的內(nèi)容就是要在彈出的消息框中顯示的內(nèi)容。該函數(shù)在我們的第二個實例中,將做詳細(xì)講解。 本實例的知識擴展:
9、; 1、打開Word,指向工具宏,再點擊“宏”按鈕,打開“宏名”對話框。這時,我們就可以看到剛才我們編寫的名叫“A”的宏。選中“A”,點擊“運行”按鈕,就能運行該宏。 2、同上操作順序,打開“宏名”對話框,在“宏名”中新輸入一個名字“B”(注意沒有引號),再點擊“創(chuàng)建”按鈕,這時就會打開VBE編輯器,并已為我們生成了一個名為“B”的空過程。該過程中的綠色文字,就是這個宏的注釋。(如果我們要對自己所編寫的代碼進(jìn)行注釋,可在注釋語句的前面加上一個英文狀態(tài)下的撇號,該注釋的語言是不會被程序運行
10、的。)用這個方法創(chuàng)建過程,可以避免手工輸入時疏忽掉程序結(jié)尾的End sub。 好了,實例一到此結(jié)束,回顧一下課前的知識點,都掌握了嗎?如果覺得沒有問題了,就準(zhǔn)備進(jìn)入我們的第二個實例吧。從零開始,步入Word宏編程的世界(第二講) 實例二:基本的對話框函數(shù) 知識點: 1、認(rèn)識消息框函數(shù)MxgBox與輸入框函數(shù)InputBox; &
11、#160; 2、什么是常量、什么是變量、申明變量的方法是什么; 3、用“&”符號連接字符串。 想想我們平時與他人談話時的形式你提問,他回答;或是他提問,你回答。我們所編寫的程序,在與計算機進(jìn)行交互的過程中,其形式也是這樣的一問一答。所以,幾乎所有的編程語言都提供有直接與
12、計算機進(jìn)行對話的函數(shù),在VBA中,這樣的最基本的函數(shù)是消息函數(shù)“MsgBox”與輸入框函數(shù)“InputBox”。 請輸入以下代碼并運行: =還有待完善的程序一= sub B() Dim X X = inputbox("您的姓名是:")。 Msgbox( " 歡迎您" & X & "朋友!") End Sub注意:、在輸入“Msgbox( " 歡迎您" & X & "朋友!")”這行代碼時,括號內(nèi)幾個字符串之間有空格,沒有輸入空格的話會出錯,出錯時,代碼將以紅色顯示
13、。、本程序運行時如果點“取消”按鈕,其實會出現(xiàn)問題,關(guān)于對這個問題的解決方法,將在后面討論。所以,我們先稱本程序為“還有待完善的程序”。(朋友們可以先試一下,看看會出現(xiàn)什么問題?)。運行效果如圖2-1與圖2-2。看到了嗎?這就是最簡單的與計算機進(jìn)行對話的效果。 代碼解說: 從Sub B()到End sub就是一個完整的過程“B”。 “InputBox("您的姓名是:")”這句代碼是顯示一個“輸入框”,請您輸入自己的姓名。這句代碼事實上就是一個計算機提問,人回答的“對話”過程。其中,“
14、InputBox”函數(shù)的作用就是彈出一個輸入框,等待我們回答計算機的提問。 當(dāng)然,我們在回答計算機時,可能填的是“老王”也可能填的是“老李”,這個答案本身是不固定的,所以,我們將這個答案的值賦予“變量”“X”。這下,大家可能就知道“變量”的含意了吧?在程序運行中,我們經(jīng)常會遇到值不能確定,或者是可能會發(fā)生改變的某個數(shù)據(jù),在這個時候,我們就用一個“符號”來“代替”這個可能會變化的值,這個用來代替不能確定的值的“符號”,就是“變量”。現(xiàn)在,我們刪去本程序中的“Dim X”這句后,再運行一下試試效果。怎么樣,是不是感覺不到區(qū)別?(如果程序報錯說“沒有申明變量”的話
15、,沒有關(guān)系,請接著看下面的內(nèi)容。)在VBA語言中允許我們不申明變量就直接運用它,所以程序仍然能夠正常運行。“Dim X”這句代碼中的“Dim”就是申明變量的函數(shù),“Dim X”就是申明了一個名叫“X”的變量。在“X=inputbox("您的姓名是:")”這句代碼中,我們利用等號,將輸入框中取得的值賦予給了變量“X”。 雖說我們不申明變量就可以使用它,但這絕對不是個好的習(xí)慣。首先,在一些代碼較長的程序中,您能保證那些名字較長的變量在后面用到時,您不會輸錯嗎?其次,自己不申明變量,時間久了,那些較長的程序可能會連您自己也看不懂;另外
16、,程序在訪問申明過的變量時,速度會比訪問沒有申明過的變量要快一些。為了避免我們使用變量時出錯,我們可以在VBE編輯器菜單的工具選項編輯器選項卡上,選中“要求申明變量”(見下面圖23、24),這樣VBE會自動在我們每一個工程的前面加上一句“Option Explicit”,這句代碼將檢查我們所要使用的變量是否申明,沒有申明的話就會中止程序的運行。做了上述的操作后,我們再運行去掉“Dim X”語句的過程,程序就會報“沒有申明變量”的錯誤。關(guān)于變量,還有一些其它的知識,我們將在實例三中進(jìn)行更深一步的學(xué)習(xí),現(xiàn)在就到這吧。 “Msgbox( "
17、歡迎您" & X & "朋友!")”這句中的“msgBox”函數(shù),大家已不陌生,它的作用就是彈出一個消息框來(在本程序中,這個消息框就是計算機對我們輸入姓名后的回答。)。 在這個消息框所顯示的文字中包含了三個部分。字符串“歡迎您” 、字符串“朋友!”和變量“X”所可能對應(yīng)的字符串“老王、老李”等。在VBA語言中,我們使用“&”符號來連接字符串,所以我們在程序運行最后,看到的是一個像圖2-2那樣完整的歡迎語句。VBA語言中,在使用“&”連接符號時,請一定注意字符串與字符串之間有一個空格,否
18、則程序一定會出錯。 由于MsgBox函數(shù)與InputBox函數(shù)是兩個非常常用的對話函數(shù),所以,我們再對它進(jìn)行更深一步的學(xué)習(xí)。使用MsgBox函數(shù)時的標(biāo)準(zhǔn)格式: 變量=MsgBox(”要顯示在這兒的語句”,按鈕的參數(shù),”消息框的題目”) 例子:Y= MsgBox(”歡迎您” & X &”朋友!”,0,”這里是歡迎對話框”)請注意格式中英文狀態(tài)下的引號、逗號與空格的使用。 使用InputBox函數(shù)時的標(biāo)準(zhǔn)格式:
19、0;變量=InputBox(“要顯示的提示文本”,” 輸入框的題目”,”輸入框中默認(rèn)顯示的語句”) 例子:X= InputBox(“請輸入您的姓名”,”這里是輸入對話框”,”您的姓名請輸入到這兒?!?。 根據(jù)上面的格式,請修改本實例的程序代碼為: =還有待完善的程序二= Sub B() Dim X Dim Y X = inputbox("您的姓名是:",” 姓名輸入框”,” 您的姓名請輸入到這兒?!? Y = Msgbox( " 歡迎您" & X &am
20、p; "朋友!",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ū)懙竭@么詳細(xì),您是否已經(jīng)覺得它已經(jīng)很完善了呢?那么,在當(dāng)程序要求您輸入您的姓名時
21、,如果您選擇了“取消”,會有什么現(xiàn)象呢?對,“取消”按鈕同樣會向程序返回一個值。為了使用函數(shù)時更靈活一些,VBA將這些返回的值“固定”為以下的數(shù)值,這些在程序中被固定的值,就是“常數(shù)”。MsgBox函數(shù)的常數(shù)如下: “確定”按鈕被單擊時,返回“1”;“取消”按鈕被單擊時,返回“2”;“終止”按鈕被單擊時,返回“3”;“重試”按鈕被單擊時,返回“4”;“忽略”按鈕被單擊時,返回“5”;“是”按鈕被單擊時,返回“6”;“否”按鈕被單擊時,返回“7”。 InputBox函數(shù)在使用過程中,當(dāng)人們輸入了值的時候,選擇“確定”或按下回車鍵,則返回輸入框中的內(nèi)
22、容,輸入框中的內(nèi)容顯示不是“固定”的,也就是說它不是常數(shù);但是,如果人們在要求輸入之時選擇的是“取消”按鈕,則會返回一個值,這個值是“空值”,注意“空值”并不是“零”。所以,InputBox函數(shù)只有一個常數(shù)“空”。 下面,我們用:如果(If)、那么(Then)、否則(else)、結(jié)束(end if)判斷語句來完善我們今天的實例。關(guān)于“If”判斷語句,不是本實例的學(xué)習(xí)重點,下節(jié)課我們將會詳細(xì)介紹它。代碼中必要的地方已添加了注釋(還記得為代碼添加注釋的方法嗎?)。=完善后的B程序= Sub B() Dim X Dim Y X = InputBox(&q
23、uot;您的姓名是:", " 姓名輸入框", " 您的姓名請輸入到這兒。") If X <> "" Then如果X的值不為“空”,那么 Y = MsgBox(" 歡迎您" & X & "朋友!", 0, " 這里是歡迎對話框.") Else否則(即,的值為“空”) End If結(jié)束 End Sub 代碼“If X <> "" Then”中的“<>”是大于與小于
24、符號,表示“不等于”的意思。分別運行本程序與最前面的程序,并選擇“取消”,對比一下運行的效果,從完善后的程序中想必您不難看出“常數(shù)”在程序中的作用了吧? 請再多體會體會這本實例中的這幾個例子,您對MsgBox與InputBox這兩個函數(shù)的熟悉程度,將直接影響您后面的學(xué)習(xí)。加點油吧。本實例的知識擴展: 1、請將本課中學(xué)到的MsgBox函數(shù)的參數(shù)分別運用到實例一中,看看效果如何。 2、請思考:哪些情況下,會使用到MsgBox函數(shù)的不同返回的值? 好了,實例二
25、到此結(jié)束,請再回顧一遍本實例的知識點,您都掌握了嗎?是不是覺得VBA并不像想象中那么困難?如果您確信已完全掌握了前面這兩課的內(nèi)容,那么,準(zhǔn)備接受實例三的挑戰(zhàn)吧!從零開始,步入Word宏編程的世界(第三講)實例三:“猜數(shù)游戲”知識點:1、學(xué)習(xí)變量的類型與轉(zhuǎn)換; 2、掌握程序的循環(huán)與判斷; 3、學(xué)習(xí)隨機數(shù)的生成。 通過對前面兩個實例的學(xué)習(xí),相信您對自己掌握VBA編程已充滿了信心。今天,我們將編寫一個小小的游戲程序。這個游戲程序中既包含了新的知識點,又要考驗?zāi)鷮η皟烧n知識運用的熟練程
26、度,就讓我們靜下心來克服這個小難關(guān)吧。 游戲內(nèi)容是這樣的:電腦生成一個0到99之間的整數(shù),請您來猜這個數(shù)是多少,每猜一次,電腦都給您一個提示,直到您猜中為止。 程序思路:、電腦首先生成一個0到99之間的整數(shù);、請您輸入您所猜的數(shù);、把您輸入的數(shù)與電腦所生成的數(shù)進(jìn)行比較,并給出“您猜大了”或“您猜小了”的提示;、如果您猜對了,則退出程序;如果您沒有猜對,則循環(huán)回第二步重復(fù)運行,讓您再次輸入自己所猜的數(shù)。 請看代碼,必要的地方已添加了注釋。程序中退格與對齊是為了便于理解。請您先試著自己把代碼
27、讀一讀,看看能不能讀懂。) =程序名“您猜”=Sub 您猜()Dim a, b, c, d申明了四個變量,變量間用英文逗號分開,與前面實例二申明變量的寫法不同,結(jié)果相同。a = 0這個變量用于計算您猜了多少次。Randomize準(zhǔn)備生成一個隨機的數(shù)字,先初始化隨機數(shù)生成器。b = Int(100 * Rnd) 生成一個百以內(nèi)的隨機數(shù),“Rnd”就是“隨機數(shù)生成函數(shù)”。Do開始循環(huán)a = a + 1您猜的次數(shù)增添一次。當(dāng)再次循環(huán)到這兒時,次數(shù)會繼續(xù)往上加。c = InputBox("請輸入您所猜的數(shù)")將取得的值賦予變量“c”,“c”是字符串!d = CInt(c) 將變量“
28、c”轉(zhuǎn)化為整數(shù),再將值賦給“d”。If b < d Then進(jìn)行比較,如果猜大了。MsgBox ("您猜的數(shù)大了")顯示比較的結(jié)果。ElseIf b > d Then進(jìn)行比較,如果猜小了。MsgBox ("您猜的數(shù)小了")顯示比較的結(jié)果。Else: b = d進(jìn)行比較,如果猜對了。MsgBox ("哈哈,您猜對了!") 顯示比較的結(jié)果。Exit Do既然已經(jīng)猜對了,就跳出循環(huán)。End If結(jié)束比較。Loop回到前面的Do,繼續(xù)循環(huán)。MsgBox ("您猜了" & a & "次!
29、") 彈出消息框,并使用了字符串連接。End Sub結(jié)束程序。運行本程序,看看效果。并根據(jù)注釋,體會循環(huán)與判斷在本程序中的作用。代碼解說: a這個變量,用于計算您所猜的次數(shù)。每多猜一次,它就在自身的基礎(chǔ)上加1,其相應(yīng)的代碼是:a = 0與a = a + 1兩句。程序結(jié)尾時,將在消息框中顯示“a”的值。 b這個變量,用于記錄一個隨機生成的數(shù)字。其相應(yīng)代碼為:Randomize與b = Int(100 * Rnd)這兩句。其中,Randomize這個語句在本程序中非常重要,如果您去掉這個函數(shù),再多運行本程序幾次的話,
30、您就會發(fā)現(xiàn)猜測的答案居然是有規(guī)律的!換句話說,只要我知道了電腦所出數(shù)字的規(guī)律我就可以“百發(fā)百中”地一次猜中這個數(shù)!所謂“隨機數(shù)”顧名思義就應(yīng)該是“隨機”產(chǎn)生的數(shù),在沒有Randomize語句的情況下,這些產(chǎn)生的數(shù)看似很“隨機”,其實有規(guī)律,這種隨機數(shù)就是“偽”隨機數(shù)。所以,Randomize語句的作用就是生成“真正”的隨機數(shù)。 Rnd函數(shù)是生成一個介于0與1之間的小數(shù),乘以100是讓這個小數(shù)成為一個介于0到100之間的數(shù);Int函數(shù)的作用是將一個數(shù)的小數(shù)部分去掉,只保留它的整數(shù)部分,即“取整”。通過這樣一個可能大家覺得有點復(fù)雜的過程,我們得到了一個0到99之
31、間的整數(shù)(大于99而小于100的小數(shù)在取整后即是99,所以前面我們說“乘以100是為了生成一個介于0到100之間的數(shù)”,而真正取整之后最大的數(shù)只能是99。),并將它的值賦予了變量“b”。生成隨機數(shù),是很多程序中要用到的功能(特別是游戲,比如游戲中隨機生成不同的怪物或不同的寶物等。),上面的內(nèi)容希望大家能悉心地體會。 c這個變量,是取得輸入框中我們所猜測的數(shù)字。其相應(yīng)代碼是“c = InputBox("請輸入您所猜的數(shù)")”,但計算機并不認(rèn)為我們所輸入的是一個數(shù)字(整數(shù)),它把我們輸入的內(nèi)容看成是文字(字符串)。顯然,文字是沒有辦法去與數(shù)字
32、比較大小的,所以,我們要用到變量d。 d這個變量,是一個整數(shù)。它是利用了“轉(zhuǎn)換函數(shù)”“CInt”,將我們所取得的字符串變量“c”轉(zhuǎn)換成了一個整數(shù)。其相應(yīng)代碼是“d = CInt(c)”。也就是說,本程序中最終進(jìn)行比較的,是兩個整數(shù)“b”與“d”。這里涉及到VBA數(shù)據(jù)類型的知識。對于VBA的數(shù)據(jù)類型,這里主要為大家介紹兩種:Integer包含 -32,768 到 32,767 之間的整數(shù)。該類型的數(shù)值基本上可以滿足我們通常使用整數(shù)時的需要; String包含變長字符串,最大長度可為 20 億個字符。該類型的值其實就是我們常用的字符串。 我們在程序當(dāng)中用的CIn
33、t函數(shù),就是將一個String類型(字符)的值,轉(zhuǎn)換成了一個Integer類型(整數(shù))的值。所以我們稱CInt函數(shù)為“轉(zhuǎn)換函數(shù)”。與CInt類似的常用轉(zhuǎn)換函數(shù)還有:Clin、CSng、CStr等??梢园裋BA幫助文件中的“轉(zhuǎn)換函數(shù)”與“數(shù)據(jù)類型”相互參照進(jìn)行學(xué)習(xí)。(相信這個時候您看幫助文件中的這部分內(nèi)容,將不會再是一件難事。)感覺到困難了嗎?如果感覺到了困難,就請將上面的內(nèi)容再體會體會。準(zhǔn)備進(jìn)入下一個知識點。程序中的DO、Exit Do以及Loop為一個整體。其中,Do是開始進(jìn)入循環(huán); Loop是指回到Do語句處,再次進(jìn)行循環(huán); Exit Do是指當(dāng)符合某一個條件時就直接退出循環(huán)。在本程序中,
34、Exit Do是指當(dāng)猜中了(即b=d)時,退出循環(huán);而無論是猜大了(b>d),還是猜小了(b程序中數(shù)字的比較,是利用If語句來實現(xiàn)的。在實例二中,我們已接觸過 If 語句,If語句的基本格式是:If(條件)Then(結(jié)果)End If(結(jié)束If判斷語句)在 If 語句判斷的過程當(dāng)中,還可以有子判斷語句:Elseif then 。對于一個具有多重判斷的語句,我們大致可以這樣理解:如果(If),那么(Then),否則(Elseif),那么(Then),再否則(Elseif),那么(Then)(ElseIf根據(jù)情況可以套嵌很多層)最終(Else),結(jié)束判斷(End If)。本實例的
35、知識擴展: 1、試一試自己在程序結(jié)尾處再添幾句,判斷所猜的次數(shù):如果小于六次,給出一個評價“優(yōu)”;等于六次,給出一個評價“良”;大于六次,給出一個評價“您還需努力!”。 2、試一試給程序補充部分內(nèi)容,其功能為:在猜完一次后,詢問游戲人“您還愿意再玩一次嗎?”,并根據(jù)游戲者的響應(yīng),再次運行程序或退出程序。 3、如果在剛開始游戲讓我們輸入數(shù)字時,我們選擇了“取消”就會出錯,您現(xiàn)在能利用自己已有的知識來解決這個問題嗎?好了,到這里,我們再回過頭來看一看這個程序,理解起來還有困難嗎?本實例可能比
36、前兩個實例稍難一點。如果您能順利完成知識擴展中的問題題,那么祝賀您,您已過了入門的第一個小難關(guān),可以進(jìn)入下一步的實例四了,如果您還存在疑問,則再請多動手把前三個實例練一練!附:完善的猜數(shù)游戲Sub 您猜()Dim a, b, c, d, e, fe=6該數(shù)字用于計算所猜次數(shù)是否為優(yōu)、良等Doa = 0Randomizeb = Int(100 * Rnd)Doa = a + 1c = InputBox("請輸入您所猜的數(shù)")d = CInt(c)If b < d ThenMsgBox ("您猜的數(shù)大了")ElseIf b > d ThenMsg
37、Box ("您猜的數(shù)小了")Else: b = dMsgBox ("哈哈,您猜對了!")Exit DoEnd IfLoopMsgBox ("您猜了" & a & "次!")If a>eMsgBox ("您還需努力!")Elseif aMsgBox ("您的猜數(shù)能力:優(yōu)!")Else a=eMsgBox ("您的猜數(shù)能力:良!")End iff=MsgBox ("您還愿意繼續(xù)玩嗎?",4,”繼續(xù)游戲”)注意此處常數(shù)的
38、使用if f=7 then注意此處消息框返回值的使用exit doelseend ifloopEnd Sub從零開始,步入Word宏編程的世界(第四講)實例四:窗體與基本的控件知識點:1、窗體與控件的使用; 2、什么是“設(shè)計時”、什么是“運行時”; 3、了解什么是對像、屬性、方法和事件。扎實的基礎(chǔ)知識是我們順利掌握VBA編程語言的先決條件。說到基礎(chǔ)知識,我想告訴朋友們 我們必須建立起“面向?qū)ο瘛钡木幊趟枷??!懊嫦驅(qū)ο瘛边M(jìn)行編程的思想實在是太重要了!我們所接觸的所有事物都是對像,都有屬性,也都有屬性值。如果您不相信?那么請看
39、 您怎樣來描述自己家里的電視機呢?它的身高?體重?住址?年齡?顏色?頻道個數(shù)?聲道個數(shù)?音量大?。科聊淮笮。糠直媛??刷新率?對,這些都是電視機的“屬性”,在這里,“電視機”就是一個“對像”。 以下,假設(shè)我們生活在“VBA編程語言”當(dāng)中,生活中的事物就是VBA的對像那么,我們怎樣來找出一個“對像”的屬性,或是怎能樣來對“對像”的屬性進(jìn)行賦值呢?看下面的程序:=程序名“您想看幾頻道”=Sub 您想看幾頻道 ()Dim XX = InputBox(“請輸入您想看的頻道的值:”)電視機 頻道 = XEnd Sub
40、60; 運行這代碼,輸入您想看的頻道的值,比如“10”或是“36”,那么,您就會看到10頻道或是36頻道的節(jié)目。這里,“電視機”是對像,“頻道”是它的屬性,“10或36”是它的屬性值。在“對像”引用自己的某個“屬性”時,我們在它們之間用一個小圓點(英文的句號)來表示,具體的格式如代碼“電視機頻道 = X”中所示;設(shè)置值的時候,用等號來賦予它。 說到賦值,您是不是想執(zhí)行“電視機屏幕尺寸 = 100 吋”命令呢?呵呵,有些事物的屬性值是“只讀”的,不能修改,比如電視機的重量等。現(xiàn)在,我正在看一個節(jié)目,但我不知道這個節(jié)目所在的是
41、幾頻道,怎么辦呢?請看程序=程序名“當(dāng)前頻道是多少”=Sub 頻道是多少()Dim 頻道的值頻道的值 = 電視機 當(dāng)前頻道MsgBox ( “頻道的值” )End Sub 程序不難懂吧? 前一個程序“您想看幾頻道”中,我們是將“值”賦予對像的屬性,后一個“頻道是多少”程序中,我們是取得對像屬性的“值”。這兩種類型的程序在使用時剛好相反,但,它們在VBA編程語言中的運用幾乎可以說是無處不在!請一定要認(rèn)真體會這兩個程序中關(guān)于“對像”、“屬性”與“值”之間的關(guān)系!
42、60; 那么,什么又是事件和方法呢?對于電視機來說,當(dāng)它的電源接通時就發(fā)生了“電源接通事件”,反之,它的電源斷掉時就發(fā)生了“電源斷掉事件”。方法,則是指人對電視機進(jìn)行的操作,比如,現(xiàn)在顯示的是10頻道,我在電視機的頻道調(diào)節(jié)按鈕上,向前按了5次,則進(jìn)入了15頻道。電視機支持使用“頻道按鈕”進(jìn)行“頻道調(diào)節(jié)”的動作,就可以說成是它支持“用按鈕調(diào)整頻道”的“方法”,“5”就是這個方法的參數(shù)(只要是您家里電視機所支持的值,當(dāng)然都可以作為它的參數(shù)。)。 那位朋友說了“喂,大哥,我們可是在學(xué)習(xí)Office的VBA編程語言??!怎么扯到電視機上去了?!
43、”好吧,我們來談Office。Office是一個對像,Word是一個對像,窗口是一個對像,文檔是一個對像,段落、標(biāo)題、一行文字、一個字符、一個標(biāo)點、一個表格、一個單元格無一不是對像!它們都有顏色、大小、寬窄、數(shù)量、位置等等屬性。我們利用VBA語言進(jìn)行編程,不外乎就是為了控制某個對像的某個屬性值以方便我們的工作罷了! 對于對像、屬性、方法、事件,我們先了解這么多,在實例六我們將繼續(xù)對其進(jìn)行學(xué)習(xí)。今天,我們先試試這些知識在窗體與控件上的運用吧!一、界面制作 1、打開VBE,指向“插入”菜單,點擊“插入用戶窗體”命令(也可以在工
44、具欄中做同樣的動作。),窗體的名稱默認(rèn)為“UserForm1”,如圖41。 2、點擊控件工具箱按鈕,打開控件工具箱,選中工具箱中的“按鈕”控件,在窗體上“畫”出一個按鈕控件(“按鈕控件”就是控件工具箱中的那個方形的小塊。),按鈕的名稱默認(rèn)為“CommandButton1”。二、屬性賦值方法之一:注意,下面進(jìn)入今天的關(guān)鍵知識點: 1、首先,雙擊做好的窗體或按鈕,就會打開代碼窗口。保證光標(biāo)在窗體或按鈕代碼的正中間,按下F5鍵運行它,或在“運行”菜單中選擇“運行用戶窗體或子過程”命令運行它,看看效果。如圖4-2左面。這里需要注意
45、兩點:A、如果光標(biāo)不在代碼中間,而您的模塊中又還存在其它的代碼的話,運行時,VBE會讓您選擇要運行的宏名稱;B、如果工程被鎖定而不能運行的話,首先請在“工具宏安全性”對話框中把安全性設(shè)為“低”,然后刪除VBE中所有存在的代碼,并關(guān)閉Word,等一下再重新啟動,重新開始本步的操作。當(dāng)然,如果您VBE中以前的代碼需要保存的話,最好把它剪切到其它文本中去,要用時再復(fù)制過來。最后,千萬記得在本實例完成之后,把“安全性”改回為高,以避免宏病毒。 2、右擊按鈕CommandButton1,選“屬性”,(如果“屬性”對話框本來就的打開的,則選中按鈕CommandButto
46、n1,然后直接修改屬性就行了。)在“屬性”對話框中選“Caption”,在右面的屬性值中輸入“開始運行”。保存后,再次運行,看看與第步運行時相比,效果有什么不同?對,按鈕上面的提示文字已經(jīng)改變成“開始運行”了。對比效果如圖4-2。 以上這兩個步驟中,需要我們應(yīng)該掌握的知識就是“怎樣在屬性對話框中,對控件的屬性進(jìn)行賦值”。下面,我們還要為控件的屬性賦值,但賦值的方法有所不同,請注意體會以下賦值方法與上面的區(qū)別。三、屬性賦值方法之二請撤消前面添加“開始運行”屬性的操作,回到按鈕表面提示文字仍然是“CommandButton1”時的狀態(tài),雙擊“CommandBut
47、ton1”將打開“CommandButton1”的代碼窗口,代碼窗口已為我們生成了控件被單擊時的空過程?,F(xiàn)在,我們就在這個“CommandButton1”的Click事件(即按鈕被單擊的事件)空過程中,添加如下的代碼:=用代碼修改屬性=Private Sub CommandButton1_Click()CommandButton1.Caption = "開始運行"End Sub本實例之初,我們學(xué)習(xí)了為對像的屬性賦值的格式,那么,您看到代碼“CommandButton1.Caption = "開始運行"”時,應(yīng)該不難理解吧?代碼中的CommandButto
48、n1是指窗體上的那個按鈕,如果有多個按鈕的話,就會分別被命名為CommandButton2、CommandButton3等等。如果要解釋上面的程序,就應(yīng)該是:當(dāng)按鈕被“Click”(單擊)時,按鈕的“Caption”(提示文字)就被改變?yōu)椤伴_始運行”。 運行本程序并單擊按鈕看看出現(xiàn)了什么效果?在按鈕被單擊前,運行的效果與第1步一樣(與圖4-2左面相同。);當(dāng)按鈕被單后,是不是與第2步運行時的情況一樣?(與圖4-2右面相同。) 第2步中,我們是“先設(shè)計好了”按鈕的提示文字再運行;第3步中,我們根本沒有“設(shè)計”按鈕的提示文字,
49、而是已經(jīng)“在窗體運行的時候”利用了按鈕的單擊事件,改變了按鈕表面的提示文字。對于第2步中的做法,我們稱之為“設(shè)計時”修改控件,對于第三步中的做法,我們稱之為“運行時”修改控件。 “設(shè)計時”修改控件的屬性雖然更方便、更容量掌握,但它往往沒有“運行時”修改控件屬性那么靈活。下面我們再做一個例子,動態(tài)改變按鈕與窗體的屬性值。再體會體會“運行時”修改屬性值的靈活性。將前面的代碼修改如下:=利用單擊按鈕事件,動態(tài)改變按鈕名與窗體顏色=Private Sub CommandButton1_Click()If CommandButton1.Caption = &
50、quot;CommandButton1" ThenCommandButton1.Caption = "開始運行"ElseIf CommandButton1.Caption = "開始運行" ThenCommandButton1.Caption = "點我干嘛,別煩我!"ElseIf CommandButton1.Caption = "點我干嘛,別煩我!" ThenUserForm1.BackColor = RGB(255, 128, 128)CommandButton1.Caption = "想
51、讓我給你點顏色嗎?"ElseIf CommandButton1.Caption = "想讓我給你點顏色嗎?" ThenUserForm1.BackColor = RGB(0, 128, 64)CommandButton1.Caption = "你真的不怕我變臉嗎?"ElseIf CommandButton1.Caption = "你真的不怕我變臉嗎?" ThenUserForm1.BackColor = RGB(128, 0, 255)CommandButton1.Caption = "怕了你了,我逃!"
52、Else: CommandButton1.Caption = "怕了你了,我逃!"Unload UserForm1“Unload”是窗體的一個方法,其作用是卸載窗體。End IfEnd Sub 本程序中用到了窗體的顏色屬性(BackColor)及其屬性值(RGB)的知識,我們在利用VBA對Word中的文字進(jìn)行修飾時,經(jīng)常會用到顏色屬性及其值的設(shè)置,這里正好學(xué)習(xí)一下。代碼最后的“Unload”是窗體的一個方法,其作用是卸載窗體,與平時我們關(guān)閉窗體時按右上角最大、最小化按鈕那里的“X”按鈕等價。有卸載就有加載,加載并顯示窗體的命令是“Show
53、”,該命令的使用格式是“窗體名.Show”。本實例的知識擴展: 1、朋友們在“設(shè)計時”屬性設(shè)置中,下點功夫摸索摸索,盡快熟悉窗體、按鈕的各種屬性; 2、本例只用到了“控件工具箱”中的按鈕控件,其它的控件雖然在作用上各不相同,但在使用的方法上與按鈕控件沒有什么大的區(qū)別,朋友們就自己嘗試一下其它的控件吧; 3、請您制作一個窗體,上面加上兩個按鈕,一個按鈕運行實例三中的游戲,另一個按鈕退出游戲。實例四到此結(jié)束,怎么樣,有收獲嗎?下一個實例“Word版的媒體播放器”,將是我們前面知識的一個集中練
54、習(xí),也將是一個會讓您很有“成就感”的練習(xí)。還等得及嗎?從零開始,步入Word宏編程的世界(第五講)實例五:Word版的“媒體播放器”知識點:1、進(jìn)一步熟悉VBE的操作界面; 2、學(xué)習(xí)使用窗體與控件進(jìn)行編程; 3、學(xué)習(xí)運用附加的控件進(jìn)行編程。 通過以上四個實例的學(xué)習(xí),今天,我們終于迎來了激動人心的時刻編寫一個“Word版的媒體播放器”!“媒體播放器”大家不會陌生吧?對,就是開始程序附件娛樂中的“Media player播放器”!相信本實例會給您帶來成就感!也算是對我們前四個實例辛苦學(xué)習(xí)的一
55、點點回報吧!當(dāng)然,在高興之余,千萬不要忘了對本實例中知識點的學(xué)習(xí)。其實,本實例中,理論知識上的難度幾乎沒有,但操作上的步驟卻相當(dāng)多,朋友們耐心一點。步驟一:界面的制作 1、回憶實例四中的操作方法,在VBE中添加一個窗體,窗體上添加兩個按鈕。將窗體的“Caption”屬性改為“Word版媒體播放器”,再分別將兩個按鈕的“Caption”屬性改為“開始運行”與“結(jié)束程序”。 2、右擊控件工具箱,選“附加控件”,將“附加控件”面板的滾動條拖動到最底端,然后選中“Windows Media player”控件。“確定”后,退出“附
56、加控件”面板(圖5-1)。這時控件工具箱最下面就多出了一個網(wǎng)格狀的“Windows Media player”控件。3、選中“Windows Media player”控件,在窗體上按您的需要和喜好“畫”出它將要顯示的范圍。 4、現(xiàn)在,我們就可以利用“屬性對話框”開始對整個窗體及窗體上所有的控件進(jìn)行“美化”。“美化”的內(nèi)容就按您自己的喜好看著辦好了,反正是“設(shè)計時”修改控件,不會影響最終程序的運行。我修改了窗體和按鈕的顏色,并修改了按鈕上的字體以及字號和字色。最終的效果如圖5-2。準(zhǔn)備工作已就緒,開始編寫代碼了吧!步驟二:編寫代碼1、雙擊“開始運行”按鈕,在
57、VBE自動生成的空過程中輸入如下代碼:Private Sub CommandButton1_Click()MediaPlayer1.FileName = "D:MyMpg龍珠2.mpg "End Sub(注意: office2003及以上版本,上句代碼應(yīng)該是:WindowsMediaPlayer1.URL="D:MyMpg龍珠2.mpg ",這是因為在這些版本上,MediaPlayer控件的屬性與方法已略有些變化了。)代碼解說: 關(guān)于“過程”,就不消多說了吧?“MediaPlayer1”就是我們在“設(shè)計時”所添加的“M
58、ediaPlayer控件”。它尾巴上的“1”,指它是在本窗體上的第一個“MediaPlayer控件”。“FileName”是“MediaPlayer1”的一個屬性,這個屬性的值就是將要播放的媒體文件的名稱(還記得為屬性賦值的格式嗎?這整句代碼可是一個標(biāo)準(zhǔn)的賦值語句。)。等號后面大家就很清楚了是要播放的文件的路徑與文件名。當(dāng)然,您的電腦上恐怕不會有“D:MyMpg龍珠2.mpg”文件的,您可要根據(jù)自己電腦上的實際情況輸入這部分的內(nèi)容。 2、雙擊“結(jié)束程序”按鈕,在打開空過程中輸入Private Sub CommandButton2_Click()Unload
59、UserForm1End Sub代碼解說: 這段代碼如果還需要解說的話,就請再看看實例四的后半部分內(nèi)容。 完成前兩步代碼輸入后,可以將光標(biāo)定位于“開始運行”按鈕的代碼區(qū)正中間,然后按下F5鍵!看到了什么?怎么樣,有成就感吧?還沒完呢!趕快“結(jié)束程序”編完最后的代碼吧! 3、回到Word,指向工具宏,打開“宏名”對話框(不要告訴我,你找不到這個對話框),在“宏名”中輸入“我的播放器”(沒有引號),點擊“創(chuàng)建”按鈕,在VBE所生成空過程中輸入Sub 我的播放器()UserForm1.Show
60、End Sub本段代碼與上段代碼一樣,也無需解說了吧? 4、回到Word,打開工具自定義,拖動“命令”選項卡的滾動條到最底部,選中“類別”窗格中的“宏”,再找到右邊“命令”窗格中的“我的播放器”宏,左鍵按住它,不要讓它跑掉(?),拖動它到“任意”的“菜單欄”或“工具欄”上,好,松左鍵,它跑不掉了(圖5-3)。保證它是被選中的,再回到“命令”選項卡上,點擊正中間的“更改所選內(nèi)容”,把它的名字“美化”一下,或者再給它添一個圖標(biāo),怎么樣,帥吧?!酷吧?!(圖5-4) 5、從此之后,王子和公主就在您的Word中哦?錯了,應(yīng)該是從此
61、以后,您的Word中,就多了一個可以播放Mpg、Mp3等等媒體的小妞啊,又錯了,是“小鈕”。當(dāng)然,要播放的內(nèi)容還得您自己為它指定(寫進(jìn)代碼中去)。本實例的知識擴展: 1、修改代碼來確定媒體文件的路徑及文件名不麻煩嗎?難道您不愿意使用“輸入框”? 2、有沒有辦法指定一個文件夾后,播放器就自動將這個文件夾下的媒體文件一個一個地播放出來呢?或者,將要播放的文件名寫在一個文本文件中,讓播放器一個一個地讀出它的名字來播放呢? 3、如果要求您不用“設(shè)計時”修改控件屬性,而讓您用“運行時”修改控件屬性
62、的方法,來制作步驟一中的界面,您不愿意試一試嗎? 4、都有哪些附加控件?各附加控件的作用又都是什么呢?本實例至此結(jié)束!VBA好玩吧?對我們的實例六,您是否已有所期待了呢?從零開始,步入Word宏編程的世界(第六講)實例六:Word中的常用對像、屬性、方法和事件知識點:掌握Word中常用的對像并學(xué)習(xí)這些對像主要的屬性、方法和事件。在實例四中,我們已接觸了對像、屬性、方法和事件的基本概念,今天,我們就來學(xué)習(xí)一下Word中的常見對像以及它們的屬性、方法和事件。本實例的內(nèi)容稍微多了一些,為了便于朋友們的理解,以下將主要介紹Word中最重要的幾個對象、屬性、方法與事件
63、。要想得到更詳細(xì)的內(nèi)容,朋友們可以在完全掌握本實例后,嘗試看看VBA的幫助,在幫助文件中搜索“Microsoft Word 對象”即可。本實例將重點介紹以下的對象,首先理清我們今天要學(xué)習(xí)的“對像”的結(jié)構(gòu)層次Application對像:即Office中您正在運行的程序本身,如Word或Excel等。Application對像是一個應(yīng)用程序中的“總對像”或者說是“頂級對像”。在Word中,Application對像包含了程序中可能會存在的其它所有對象,比如:所有的Word文檔(Documents)、程序本身的工具欄與菜單欄(CommandBars)、程序的窗口(Window)、程序的內(nèi)置對話框(D
64、ialogs)等等Documents對像:即所有Word文檔的集合。該對像中每一個單獨的文檔,即是文檔對像“Document”。在Documents對像中,可以通過引用文檔名字的方法來操作一個Document對像。Document對像:Document對像又具許多子對像。本實例主要介紹兩個Range對象(字符串對像,可以是選定的一串字符或者是一個字符)與Selection對象(活動區(qū)域?qū)ο瘢梢允俏臋n中選中的內(nèi)容或者僅僅是一個插入點);了解Paragraphs(段落集合對像)。CommandBars對像:即“命令欄”對像。它是Application中所有菜單欄與工具欄的集合。我們在編程時,對菜單欄與
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024私房舊房交易資金監(jiān)管合同3篇
- 二零二五年度藥店藥品連鎖加盟店藥品零售連鎖企業(yè)品牌形象及產(chǎn)品銷售權(quán)轉(zhuǎn)讓合同
- 二零二五年度廣告?zhèn)髅狡髽I(yè)員工工資待遇及廣告投放提成合同
- 二零二五年度學(xué)校食堂承包管理合同
- 二零二五年度輪胎維修與智能輪胎管理系統(tǒng)開發(fā)合同
- 二零二五年度環(huán)保監(jiān)測設(shè)備維護(hù)人員勞動合同解除書
- 二零二五年度體育賽事合同評審意見用語解析
- 2025年度新能源產(chǎn)業(yè)貸款居間合同
- 二零二五年度文化旅游項目用工勞務(wù)合同
- 2025年度藝術(shù)展覽合作贊助合同
- 增強現(xiàn)實技術(shù)在藝術(shù)教育中的應(yīng)用
- TD/T 1060-2021 自然資源分等定級通則(正式版)
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀
- 倉庫智能化建設(shè)方案
- 海外市場開拓計劃
- 2024年度國家社會科學(xué)基金項目課題指南
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 七上-動點、動角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
- 紅色歷史研學(xué)旅行課程設(shè)計
評論
0/150
提交評論