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