-VBA編程-從零開始學VBA_第1頁
-VBA編程-從零開始學VBA_第2頁
-VBA編程-從零開始學VBA_第3頁
-VBA編程-從零開始學VBA_第4頁
-VBA編程-從零開始學VBA_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、WORD-VBA 編程 -從零開始學 VBA從零開始,步入 Word宏編程的世界(第一講)工作中,經(jīng)??吹皆S多朋友在使用 Office 時已經(jīng)非常地熟練,但仍不敢去接觸Office的VBA編程;在網(wǎng)上Office的VBA編程論壇中,同樣看到有朋友在其 中流連了相當長的時間,但仍然不得其門而入。問一下這兩類朋友,前者覺得編 程是一件很“高深”的事,自己恐怕學不會;后者為了提高自己的工作效率,雖 然很想學,但自己一點編程的基礎(chǔ)也沒有,照著網(wǎng)上高手們的帖子做,反而xx 糊涂。當我問第二類朋友為什么不多看看 VBA的幫助文件時,“看不大懂,就像有 語言障礙一樣?!彼@樣回答我。對于第一類朋友,我想說,

2、不要被自己想象出 來的“困難”嚇倒,如果您沒有親自嘗試過,怎么知道編程會很“高深”,又怎 么知道自己學不會?而第二類朋友如果能靜下心來把基礎(chǔ)知識補一補,相信您的 問題也會迎刃而解。那么,就讓我們從最基礎(chǔ)的知識開始,步入 Office 宏編程的 世界吧。文前的幾點說明:1、雖說本文用到的程序在 office2007 與 office2010xx 同樣可以正常運行, 但考慮到目前單位辦公用機的實際情況,本文所有的實例主要還是面向 Office2003 的用戶; 2、為了便于各位讀者理清思路,避免文章涉及面太廣,本文 主要以office2003xx最常用的Word為主進行講述,有與其它 Office

3、套件相關(guān)聯(lián) 的地方,將單獨說明;3、為避免學習過程xx的枯燥乏味,本文沒有像傳統(tǒng)編程 教材那樣以理論知識為線索展開,而是將不同的知識點放到了幾個不同的實例之 xx 進行講述。所以,把每個實例“做”一遍,細心體會每個實例的知識點,將有 助于您快速掌握VBA的編程技術(shù);單純地“看”,貝卩無助于您的學習。本文的宗 旨是一一完全面向初學者!或許您還能以此為契機叩開奔向VB6 0或VB.NET的WORD-VBA編程-從零開始學VBA大門,說不定您還能編出一、兩個病毒玩玩兒(當然僅限于玩玩兒,千萬別做出什么傻事來?。?!好了,下面就開始我們 Word的VBA編程之旅吧,愿您旅途愉快!實例一:“你好,世界!

4、”知識點:1、熟悉VBE的編程界面;2、什么是VB VBE VBA 3、什么是過程、工程。不要以為這些知識點有多難,讓我們一步一步地來。啟動Word,指向工具一一宏一一VB編輯器,打開VB編輯器的界面,如圖1-1“VB編輯器”就是 VBE VBE是 Visual Basic Editing的縮寫。我們在 VBE編程環(huán)境中所使用的編程語言就是“ VBA,即Visual Basic for Applications 的縮寫,VBA語言是我們所熟知的VB編程語言的一個子集。VBE編輯器界面的菜單欄與工具欄就不必說了。界面左面中間部份是“工程資源管理器”所在的“工程資源管理區(qū)”,每一篇Word文檔中所

5、編寫的程序,WordWORD-VBA編程-從零開始學VBA都把它看成為一個“工程”,“工程資源管理器”就是對這些工程進行管理的地 方;界面左下方是“對像屬性設(shè)置區(qū)”,我們可以對自己要用到的對像的屬性進 行設(shè)置,第四個實例中,我們將對“屬性設(shè)置”進行詳細解說,現(xiàn)在大家不必管 它;界面右面大面積空白的區(qū)域是“代碼編輯區(qū)”,我們編寫的所有代碼都放在 這兒。如果看不到這個空白區(qū)域,則打開“插入”菜單,插入一個“模塊”就行 了。如果“工程資源管理器”已有“模塊”,則雙擊模塊名,就能打開“代碼編 輯區(qū)”。好,現(xiàn)在我們就在這個 VBE環(huán)境下,利用VBA語言,來編寫我們的第一 個工程(即程序)。請在“代碼編輯

6、區(qū)”中輸入如下的代碼:sub A ()msgbox( “你好,世界! ”)end sub注意,代碼“ msgbox("你好,世界!”)” 一句中的引號與括號為英文標點。點擊工具欄上的黑色三角形的“播放鍵”,或按下 F5鍵運行這個程序,您將看到 一個彈出的消息框。如圖1-2。代碼解說:sub是VB編程中申明一個過程的語句,sub A ()申明了一個名叫A的過程,A后面跟了一個括號,它的作用現(xiàn)在大家暫時不用管它。整段程序結(jié)尾WORD-VBA 編程 -從零開始學 VBA的end sub語句,表示過程“ A”在此結(jié)束。每一個程序都必需有開始與結(jié)束的標志,所以,從Sub A ()到End su

7、b就構(gòu)成了一個完整的“過程”。Msgbox是一個函數(shù),它的作用是彈出一個消息框來,它后面括號中的內(nèi)容就 是要在彈出的消息框中顯示的內(nèi)容。該函數(shù)在我們的第二個實例中,將做詳細講 解。本實例的知識擴展:1、打開Word,指向工具 xx,再點擊“ xx”按鈕,打 開“xx名”對話框。這時,我們就可以看到剛才我們編寫的名叫“ A”的xx。選 中“ A”,點擊“運行”按鈕,就能運行該 xx。2、同上操作順序,打開“ xx名” 對話框,在“ xx名”中新輸入一個名字“ B” (注意沒有引號),再點擊“創(chuàng)建” 按鈕,這時就會打開VBE編輯器,并已為我們生成了一個名為“ B”的空過程。該 過程中的綠色文字,就

8、是這個 xx 的注釋。(如果我們要對自己所編寫的代碼進行 注釋,可在注釋語句的前面加上一個英文狀態(tài)下的撇號,該注釋的語言是不會被 程序運行的。)用這個方法創(chuàng)建過程,可以避免手工輸入時疏忽掉程序結(jié)尾的 End sub。好了,實例一到此結(jié)束,回顧一下課前的知識點,都掌握了嗎?如果覺得沒 有問題了,就準備進入我們的第二個實例吧。從零開始,步入Word宏編程的世界(第二講)實例二:基本的對話框函數(shù)知識點:1、認識消息框函數(shù)MxgBox與輸入框函數(shù) InputBox ;2、什么是常量、 什么是變量、 申明變量的方法是什么; 3、用“&” 符號連接字符串。想想我們平時與他人談話時的形式你提問,他回

9、答;或是他提問,你回 答。我們所編寫的程序,在與計算機進行交互的過程xx ,其形式也是這樣的一問一答。所以,幾乎所有的編程語言都提供有直接與計算機進行對話的函數(shù),在 VBAxx這樣的最基本的函數(shù)是消息函數(shù)“ MsgBoX與輸入框函數(shù)“ InputBox ”。 請輸入以下代碼并運行:''' =還有待完善的程序一 =subB()Dim XX= inputbox(" 您的姓名是: ") 。 Msgbox( " 歡迎您" & X & " 朋友! ")End Sub注意:1、在輸入“ Msgbox(&qu

10、ot;歡迎您"& X & "朋友!")”這行代碼時,括 號內(nèi)幾個字符串之間有空格,沒有輸入空格的話會出錯,出錯時,代碼將以紅色 顯示。2、本程序運行時如果點“取消”按鈕,其實會出現(xiàn)問題,關(guān)于對這個問 題的解決方法,將在后面討論。所以,我們先稱本程序為“還有待完善的程序”。 (朋友們可以先試一下,看看會出現(xiàn)什么問題?)。運行效果如圖 2-1 與圖 2-2 ??吹搅藛??這就是最簡單的與計算機進行對話的效果。代碼解說:從Sub B()到End sub就是一個完整的過程“ B”?!癐nputBox ("您的姓名是: ") ”這句代碼是顯

11、示一個“輸入框”,請您輸入自己的姓名。這句 代碼事實上就是一個計算機提問,人回答的“對話”過程。其中,“ InputBox ” 函數(shù)的作用就是彈出一個輸入框,等待我們回答計算機的提問。當然,我們在回答計算機時,可能填的是“ xx”也可能填的是“ xx”, 這個答案本身是不固定的,所以,我們將這個答案的值賦予“變量”“X”。這下,大家可能就知道“變量”的含意了吧?在程序運行中,我們經(jīng)常會遇到值 不能確定,或者是可能會發(fā)生改變的某個數(shù)據(jù),在這個時候,我們就用一個“符 號”來“代替”這個可能會變化的值,這個用來代替不能確定的值的“符號”, 就是“變量”?,F(xiàn)在,我們刪去本程序中的“ Dim X”這句后

12、,再運行一下試試效果。怎么樣,是 不是感覺不到區(qū)別?(如果程序報錯說“沒有申明變量”的話,沒有關(guān)系,請接 著看下面的內(nèi)容。)在 VBA語言中允許我們不申明變量就直接運用它,所以程序 仍然能夠正常運行。“ Dim X”這句代碼中的“ Dim”就是申明變量的函數(shù),“ Dim X”就是申明了一個名叫“ X”的變量。在“ X=inputbox("您的姓名是:")”這句 代碼中,我們利用等號,將輸入框中取得的值賦予給了變量“X”。雖說我們不申明變量就可以使用它,但這絕對不是個好的習慣。首先,在一 些代碼較長的程序中,您能保證那些名字較長的變量在后面用到時,您不會輸錯 嗎?其次,自己不

13、申明變量,時間久了,那些較長的程序可能會連您自己也看不 懂;另外,程序在訪問申明過的變量時,速度會比訪問沒有申明過的變量要快一 些。為了避免我們使用變量時出錯,我們可以在 VBE編輯器菜單的工具一一選項一一 編輯器選項卡上,選中“要求申明變量”(見下面圖2-3、2-4),這樣VBE會自動在我們每一個工程的前面加上一句“ Option Explicit ”,這句代碼將檢查我 們所要使用的變量是否申明,沒有申明的話就會中止程序的運行。做了上述的操 作后,我們再運行去掉“ Dim X”語句的過程,程序就會報“沒有申明變量”的 錯誤。WORD-VBA 編程 -從零開始學 VBA總引用pmg件宏 Qi)

14、r ,.WORD-VBA編程-從零開始學VBA運行® 工具 外捋程序)窗口 幫助®-IflJxl選項.Uornal雇性 數(shù)字簽名關(guān)于變量,還有一些其它的知識,我們將在實例 XX進行更深一步的學習,現(xiàn) 在就到這吧?!癕sgbox("歡迎您"& X & "朋友! ”)”這句中的“ msgBoX函數(shù),大家已不陌生,它的作用就是彈出一個消息框來(在本程序中,這個消息框就是計算機 對我們輸入姓名后的回答。)。在這個消息框所顯示的文字中包含了三個部分。字符串“歡迎您”、字符串“朋友! ”和變量“ X”所可能對應的字符串“ xx、 XX”等。

15、在VBA語言中,我們使用“ &”符號來連接字符串,所以我們在程序 運行最后,看到的是一個像圖2-2那樣完整的歡迎語句。VBA語言中,在使用“ & 連接符號時,請一定注意字符串與字符串之間有一個空格,否則程序一定會出錯。由于MsgBo函數(shù)與InputBox函數(shù)是兩個非常常用的對話函數(shù),所以,我們再對 它進行更深一步的學習。使用MsgBox函數(shù)時的標準格式:變量二MsgBox(”要顯示在這兒的語句”,按 鈕的參數(shù),”消息框的題目”)例子:丫二MsgBoX”歡迎您” & X &”朋友! ”,0, ” 這里是歡迎對話框”)請注意格式中英文狀態(tài)下的引號、逗號與空格的使用。

16、使用InputBox函數(shù)時的標準格式:變量=lnputBox( “要顯示的提示文本”,” 輸入框的題目” ,”輸入框中默認顯示的語句” )例子: X= InputBox( “請輸入您 的姓名” , ”這里是輸入對話框” , ”您的姓名請輸入到這兒?!?)。根據(jù)上面的格 式,請修改本實例的程序代碼為:''' =還有待完善的程序二 =Sub B()Dim XDim YX = inputbox(" 您的姓名是:",”姓名輸入框”,”您的姓名請 輸入到這兒。” )丫 = Msgbox( " 歡迎您 " & X & &quo

17、t; 朋友! ",0, ” 這里是歡迎對話 框.”)End Sub本段程序應該很容易讀懂吧?運行一下,看看與前面程序的區(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)象呢?對,“取消” 按鈕同樣會向程序返回一個值

18、。 為了使用函數(shù)時更靈活一些,VBA將這些返回的值 “固定”為以下的數(shù)值,這些在程序中被固定的值,就是“常數(shù)”。MsgBox函數(shù)的常數(shù)如下:“確定”按鈕被單擊時,返回“ 1”;“取消”按鈕 被單擊時,返回“ 2”;“終止”按鈕被單擊時,返回“ 3”;“重試”按鈕被單 擊時,返回“ 4”;“忽略”按鈕被單擊時,返回“ 5”;“是”按鈕被單擊時, 返回“ 6”;“否”按鈕被單擊時,返回“ 7”。InputBox 函數(shù)在使用過程中,當人們輸入了值的時候,選擇“確定”或按下 回車鍵,則返回輸入框中的內(nèi)容,輸入框中的內(nèi)容顯示不是“固定”的,也就是 說它不是常數(shù);但是,如果人們在要求輸入之時選擇的是“取消

19、”按鈕,則會返 回一個值,這個值是“空值”,注意“空值”并不是“零”。所以, InputBox 函 數(shù)只有一個常數(shù)“空”。下面,我們用:如果(If )、那么(Then)、否則(else )、結(jié)束(end if ) 判斷語句來完善我們今天的實例。關(guān)于“ If ”判斷語句,不是本實例的學習重點, 下節(jié)課我們將會詳細介紹它。代碼中必要的地方已添加了注釋(還記得為代碼添 加注釋的方法嗎?)。''=完善后的 B程序=Sub B()Dim XDim YX = InputBox(" 您的姓名是: ", " 姓名輸入框 ", " 您的姓名請輸入

20、到這兒。 ")If X <> ""Then '如果X的值不為“空”,那么 Y = MsgBox("歡迎您"& X & "朋友! ”, 0,"這里是歡迎對話框.")Else '否則(即,X的值為“空”)End If '結(jié)束End Sub代碼“If X <> "" Then ”中的“ v>”是大于與小于符號,表示“不等于”的 意思。分別運行本程序與最前面的程序,并選擇“取消”,對比一下運行的效果,從完 善后的程序中想必您不難看出“

21、常數(shù)”在程序中的作用了吧?請再多體會體 會這本實例中的這幾個例子,您對 MsgBox與InputBox這兩個函數(shù)的熟悉程度,將 直接影響您后面的學習。加點油吧。本實例的知識擴展:1、請將本課中學到的MsgBox函數(shù)的參數(shù)分別運用到實 例一中,看看效果如何。2、請思考:哪些情況下,會使用到 MsgBox函數(shù)的不同 返回的值?好了,實例二到此結(jié)束,請再回顧一遍本實例的知識點,您都掌握了嗎?是 不是覺得VBA并不像想象中那么困難?如果您確信已完全掌握了前面這兩課的內(nèi) 容,那么,準備接受實例三的挑戰(zhàn)吧!從零開始,步入Word宏編程的世界(第三講)實例三:“猜數(shù)游戲”知識點: 1、學習變量的類型與轉(zhuǎn)換;

22、 2、掌握程序的循環(huán)與判斷; 3、學習隨 機數(shù)的生成。通過對前面兩個實例的學習,相信您對自己掌握 VBA編程已充滿了信心。今 天,我們將編寫一個小小的游戲程序。這個游戲程序中既包含了新的知識點,又 要考驗您對前兩課知識運用的熟練程度,就讓我們靜下心來克服這個小難關(guān)吧。游戲內(nèi)容是這樣的:電腦生成一個 0到 99之間的整數(shù),請您來猜這個數(shù)是多 少,每猜一次,電腦都給您一個提示,直到您猜中為止。程序思路:1、電腦首先生成一個0到99之間的整數(shù);2、請您輸入您所猜的數(shù);3、把您輸入的數(shù)與電腦所生成的數(shù)進行比較,并給出“您猜大了”或“您 猜小了”的提示;4、如果您猜對了,則退出程序;如果您沒有猜對,則循

23、環(huán)回第二步重復運 行,讓您再次輸入自己所猜的數(shù)。請看代碼,必要的地方已添加了注釋。程序中退格與對齊是為了便于理解。請您先試著自己把代碼讀一讀,看看能不能讀懂。)' ' =程序名“您猜” =Sub 您猜 ()Dim a, b, c, d '申明了四個變量,變量間用英文逗號分開,與前面實例二申明變量的寫法不同,結(jié)果相同。a = 0 '這個變量用于計算您猜了多少次。Randomize'準備生成一個隨機的數(shù)字,先初始化隨機數(shù)生成器。b = In t(100 * Rnd)'生成一個百以內(nèi)的隨機數(shù),“ Rnd'就是“隨機數(shù)生成函數(shù)”。Do開始循環(huán)a

24、= a + 1 '您猜的次數(shù)增添一次。當再次循環(huán)到這兒時,次數(shù)會繼續(xù)往上加。c = InputBox("請輸入您所猜的數(shù)”)將取得的值賦予變量“ c”,“ c”是字符串!d = Clnt(c)'將變量“ c”轉(zhuǎn)化為整數(shù),再將值賦給“ d”。If b <d Then '進行比較,如果猜大了。MsgBox (" 您猜的數(shù)大了 ") '顯示比較的結(jié)果。ElseIf b > d Then '進行比較,如果猜小了。MsgBox (" 您猜的數(shù)小了 ") '顯示比較的結(jié)果。Else: b = d

25、'進行比較,如果猜對了。MsgBox (" 哈哈, 您猜對了 !") '顯示比較的結(jié)果。Exit Do '既然已經(jīng)猜對了,就跳出循環(huán)。End If '結(jié)束比較。Loop'回到前面的Do,繼續(xù)循環(huán)。WORD-VBA 編程 -從零開始學 VBAMsgBox (" 您猜了" & a & " 次!") '彈出消息框,并使用了字符串連接。End Sub '結(jié)束程序。運行本程序,看看效果。并根據(jù)注釋,體會循環(huán)與判斷在本程序中的作用。 代碼解說:a 這個變量,用于計算您所猜的次

26、數(shù)。 每多猜一次, 它就在自身的基礎(chǔ)上加 1, 其相應的代碼是: a = 0 與 a = a + 1 兩句。程序結(jié)尾時,將在消息框中顯示“ a” 的值。b這個變量,用于記錄一個隨機生成的數(shù)字。 其相應代碼為:Randomize與b = Int(100 * Rnd)這兩句。其中,Randomize這個語句在本程序中非常重要,如果您 去掉這個函數(shù),再多運行本程序幾次的話,您就會發(fā)現(xiàn)猜測的答案居然是有規(guī)律 的!換句話說,只要我知道了電腦所出數(shù)字的規(guī)律我就可以“百發(fā)百中”地一 次猜中這個數(shù)!所謂“隨機數(shù)”顧名思義就應該是“隨機”產(chǎn)生的數(shù),在沒有Ran domize語句的情況下,這些產(chǎn)生的數(shù)看似很“隨機

27、”,其實有規(guī)律,這種隨機 數(shù)就是“偽”隨機數(shù)。所以,Ran domize語句的作用就是生成“真正”的隨機數(shù)。 Rnd函數(shù)是生成一個介于0與1之間的小數(shù),乘以100是讓這個小數(shù)成為一個介于 0到100之間的數(shù);Int函數(shù)的作用是將一個數(shù)的小數(shù)部分去掉,只保留它的整數(shù) 部分,即“取整”。通過這樣一個可能大家覺得有點復雜的過程,我們得到了一 個0到99之間的整數(shù)(大于 99而小于 100的小數(shù)在取整后即是 99,所以前面我 們說“乘以 100是為了生成一個介于 0到100之間的數(shù)”,而真正取整之后最大 的數(shù)只能是 99。),并將它的值賦予了變量“ b”。 生成隨機數(shù),是很多程序中要用到的功能(特別是

28、游戲,比如游戲中隨機生成不 同的怪物或不同的寶物等。),上面的內(nèi)容希望大家能悉心地體會。WORD-VBA 編程 -從零開始學 VBAc 這個變量,是取得輸入框中我們所猜測的數(shù)字。其相應代碼是“ c = InputBox(" 請輸入您所猜的數(shù) ") ”,但計算機并不認為我們所輸入的是一個數(shù)字 (整數(shù)),它把我們輸入的內(nèi)容看成是文字(字符串)。顯然,文字是沒有辦法 去與數(shù)字比較大小的,所以,我們要用到變量d。d 這個變量,是一個整數(shù)。它是利用了“轉(zhuǎn)換函數(shù)”“ CInt ”,將我們所 取得的字符串變量“ c”轉(zhuǎn)換成了一個整數(shù)。其相應代碼是“ d = Clnt(c) ”。也 就是說

29、,本程序中最終進行比較的,是兩個整數(shù)“b”與“ d”。這里涉及到VBA數(shù)據(jù)類型的知識。對于VBA的數(shù)據(jù)類型,這里主要為大家介紹兩種:lnteger 包含 -32,768 到 32,767 之間的整數(shù)。該類型的數(shù)值基本上可以滿 足我們通常使用整數(shù)時的需要; String 包含變長字符串,最大 xx 可為 20 億 個字符。該類型的值其實就是我們常用的字符串。 我們在程序當中用的 Clnt 函數(shù), 就是將一個 String 類型(字符)的值,轉(zhuǎn)換成了一個 lnteger 類型(整數(shù))的值。 所以我們稱 Clnt 函數(shù)為“轉(zhuǎn)換函數(shù)”。與Clnt類似的常用轉(zhuǎn)換函數(shù)還有:Clin、CSng CStr等。

30、可以把VBA幫助文件中 的“轉(zhuǎn)換函數(shù)”與“數(shù)據(jù)類型”相互參照進行學習。 ( 相信這個時候您看幫助文件 中的這部分內(nèi)容,將不會再是一件難事。 )感覺到困難了嗎?如果感覺到了困難,就請將上面的內(nèi)容再體會體會。準備 進入下一個知識點。程序中的DO Exit Do以及Loop為一個整體。其中,Do是開始進入循環(huán);Loop 是指回到Do語句處,再次進行循環(huán);Exit Do是指當符合某一個條件時就直接退 出循環(huán)。在本程序中,ExitDo是指當猜中了(即b=d)時,退出循環(huán);而無論是猜大了( b>d),還是猜小了( bWORD-VBA 編程 -從零開始學 VBA程序中數(shù)字的比較, 是利用 If 語句來

31、實現(xiàn)的。 在實例二中, 我們已接觸過 If 語句, If 語句的基本格式是:If (條件)Then(結(jié)果)End I f '(結(jié)束If判斷語句)在 If 語句判斷的過程當中,還可以有子判斷語句: Elseif then。對于一個具有多重判斷的語句,我們大致可以這樣理解:如果(If ),那么(Then), 否則(Elseif),那么(Then),再否則(Elseif),那么(The n)(Elself 根 據(jù)情況可以套嵌很多層)最終 (Else) ,結(jié)束判斷( End If )。本實例的知識擴展: 1、試一試自己在程序結(jié)尾處再添幾句,判斷所猜的次數(shù):如果小于六次,給出一個評價“優(yōu)”;等于

32、六次,給出一個評價“良”;大于六 次,給出一個評價“您還需努力!”。 2、試一試給程序補充部分內(nèi)容,其功能為: 在猜完一次后,詢問游戲人“您還愿意再玩一次嗎?”,并根據(jù)游戲者的響應, 再次運行程序或退出程序。 3、如果在剛開始游戲讓我們輸入數(shù)字時,我們選擇了 “取消”就會出錯,您現(xiàn)在能利用自己已有的知識來解決這個問題嗎?好了,到這里,我們再回過頭來看一看這個程序,理解起來還有困難嗎?本 實例可能比前兩個實例稍難一點。如果您能順利完成知識擴展中的問題題,那么 xx 您,您已過了 xx 的第一個小難關(guān),可以進入下一步的實例四了,如果您還存在 疑問,則再請多動手把前三個實例 xx! 附:完善的猜數(shù)游

33、戲Sub 您猜 ()Dim a, b, c, d, e, fe=6該數(shù)字用于計算所猜次數(shù)是否為優(yōu)、良等DoWORD-VBA 編程 -從零開始學 VBARandomizeb = Int(100 * Rnd)Doa = a + 1c = InputBox(" 請輸入您所猜的數(shù) ")d = CInt(c)If b < d ThenMsgBox (" 您猜的數(shù)大了 ")ElseIf b > d ThenMsgBox (" 您猜的數(shù)小了 ")Else: b = dMsgBox (" 哈哈,您猜對了 !")Exit

34、 DoEnd IfLoopMsgBox (" 您猜了" & a & " 次!")If a>eMsgBox (" 您還需努力! ")Elseif aMsgBox (" 您的猜數(shù)能力:優(yōu)! ")Else a=eMsgBox (" 您的猜數(shù)能力:良! ")End iff=MsgBox (" 您還愿意繼續(xù)玩嗎? ",4, ”繼續(xù)游戲” ) ''注意此處常數(shù)的使 用WORD-VBA 編程 -從零開始學 VBAif f=7 then '

35、9;注意此處消息框返回值的使用exit doelseend ifloopEnd Sub從零開始,步入 Word宏編程的世界(第四講)實例四:窗體與基本的控件知識點: 1、窗體與控件的使用; 2、什么是“設(shè)計時”、什么是“運行時”; 3、了解什么是對像、屬性、方法和事件。扎實的基礎(chǔ)知識是我們順利掌握 VBA編程語言的先決條件。說到基礎(chǔ)知識,我 想告訴朋友們 我們必須建立起“面向?qū)ο瘛钡木幊趟枷??!懊嫦驅(qū)ο瘛边M行 編程的思想實在是太重要了!我們所接觸的所有事物都是對像,都有屬性,也都 有屬性值。如果您不相信?那么請看您怎樣來描述自己家里的電視機呢?它 的身高?體重?住址?年齡?顏色?頻道個數(shù)?聲道

36、個數(shù)?音量大???屏幕大 ?。糠直媛??刷新率?對,這些都是電視機的“屬性”,在這里,“電視機” 就是一個“對像”。以下,假設(shè)我們生活在“ VBA編程語言”當中,生活中的事物 就是VBA的對像一一那么,我們怎樣來找出一個“對像”的屬性,或是怎能樣來 對“對像”的屬性進行賦值呢?看下面的程序:=程序名“您想看幾頻道” =Sub 您想看幾頻道 ()Dim XWORD-VBA 編程 -從零開始學 VBAX = InputBox (“請輸入您想看的頻道的值:”)電視機 頻道 = XEnd Sub運行這代碼,輸入您想看的頻道的值,比如“ 10”或是“ 36”,那么,您就 會看到 10 頻道或是 36 頻道的

37、節(jié)目。這里,“電視機”是對像,“頻道”是它的 屬性,“ 10或 36”是它的屬性值。在“對像”引用自己的某個“屬性”時,我們 在它們之間用一個小圓點 (英文的句號) 來表示, 具體的格式如代碼“電視機 頻 道二 X”中所示;設(shè)置值的時候,用等號來賦予它。說到賦值,您是不是想執(zhí)行“電視機屏幕尺寸 = 100 吋”命令呢?呵呵, 有些事物的屬性值是“只讀”的,不能修改,比如電視機的重量等。現(xiàn)在,我正在看一個節(jié)目,但我不知道這個節(jié)目所在的是幾頻道,怎么辦呢?、圭 =7.工口請看程序=程序名“當前頻道是多少” =Sub 頻道是多少()Dim 頻道的值頻道的值 = 電視機 當前頻道MsgBox ( “頻

38、道的值” )End Sub程序不難懂吧?前一個程序“您想看幾頻道”中,我們是將“值”賦予對像 的屬性,后一個“頻道是多少”程序中,我們是取得對像屬性的“值”。這兩種 類型的程序在使用時剛好相反,但,它們在 VBA編程語言中的運用幾乎可以說是 無處不在!請一定要認真體會這兩個程序中關(guān)于“對像”、“屬性”與“值” 之間的關(guān)系!那么,什么又是事件和方法呢?對于電視機來說,當它的電源接通時就發(fā)生了“電源接通事件”,反之,它的電源斷掉時就發(fā)生了“電源斷掉事 件”。方法,則是指人對電視機進行的操作,比如,現(xiàn)在顯示的是 10 頻道,我在 電視機的頻道調(diào)節(jié)按鈕上, 向前按了 5 次,則進入了 15頻道。電視機

39、支持使用“頻 道按鈕”進行“頻道調(diào)節(jié)”的動作,就可以說成是它支持“用按鈕調(diào)整頻道”的 “方法”,“ 5”就是這個方法的參數(shù)(只要是您家里電視機所支持的值,當然都 可以作為它的參數(shù)。)。那位朋友說了“喂,大哥,我們可是在學習 Ofice的VBA編程語言?。≡趺?扯到電視機上去了?! ”好吧,我們來談 Ofice。Office是一個對像,Word是一 個對像,窗口是一個對像,文檔是一個對像,段落、標題、一行文字、一個字符、 一個標點、一個表格、一個xx無一不是對像!它們都有顏色、大小、寬窄、 數(shù)量、位置等等屬性。我們利用 VBA語言進行編程,不外乎就是為了控制某 個對像的某個屬性值以方便我們的工作

40、罷了!對于對像、屬性、方法、事件,我 們先了解這么多,在實例六我們將繼續(xù)對其進行學習。今天,我們先試試這些知 識在窗體與控件上的運用吧!一、界面制作1、打開VBE指向“插入”菜單,點擊“插入用戶窗體”命令(也可以在工 具欄中做同樣的動作。),窗體的名稱默認為“UserFormT,如圖4 1。2、點擊控件工具箱按鈕,打開控件工具箱,選中工具箱中的“按鈕”控件,在窗體上“畫”出一個按鈕控件(“按鈕控件”就是控件工具箱中的那個方形的小塊。), 按鈕的名稱默認為“ CommandButton”1 。WORD-VBA編程-從零開始學VBAMicrosoft Vi suit Esic -新版UF£

41、;ic空件® 編輻 視團 插入(X)構(gòu)式© 調(diào)試)運行® 工具 外接程序)窗口® 粘助怨)LJJ匱騫置咎厚| 丘具箱按鈕在這兒J I U+ flOTB«l二Project CSf 版小 日臼 Hicrusoft Wen 團j Thi sD&cufli e:F凸窗體jJ* g J!I!I1?離 新版Uflic - UserForml (UmerFonn)EJxJ啟莎湘期哪凝刪豳邨0 湘筒邨腳卿阪i卿兇竺淨夢UstrForml這是窗體2d|UserFf按字母倍稱】控件Ik A胡匡函7 a = EackCcBorderBorder.L7.?7

42、(:-:?臂:£:tgir.T.一C amn uidfiut t onlC pti cCycleli rmuyc±Tiv-fonrinII屬性賦值方法之一:注意,下面進入今天的關(guān)鍵知識點:1、首先,雙擊做好的窗體或按鈕,就會 打開代碼窗口。保證光標在窗體或按鈕代碼的正中間,按下F5鍵運行它,或在“運 行”菜單中選擇“運行用戶窗體或子過程”命令運行它,看看效果。如圖4-2左面。這里需要注意兩點:A、如果光標不在代碼中間,而您的模塊中又還存在其它的代碼的話,運行時,VBE會讓您選擇要運行的宏名稱;B、如果工程被鎖定而不能運行的話,首先請在“工具宏xx ”對話框xx把xx設(shè)為“低

43、”,然后刪除 VBExx所有存在的代碼,并關(guān)閉 Word,等一下再 重新啟動,重新開始本步的操作。當然,如果您VBExx以前的代碼需要保存的話,最好把它剪切到其它文本 xx 去,要用時再復制過來。最后,千萬記得在本實例完 成之后,把“xx”改回為高,以避免宏病毒。2、右擊按鈕CommandButton選“屬 性”,(如果“屬性”對話框本來就的打開的,則選xx按鈕CommandButton1然后直接修改屬性就行了。)在“屬性”對話框 xx 選“ Caption ”,在右面的屬性 值xx輸入“開始運行”。保存后,再次運行,看看與第1步運行時相比,效果有 什么不同?對,按鈕上面的提示文字已經(jīng)改變成“

44、開始運行”了。對比效果如圖 4-2。以上這兩個步驟xx,需要我們應該掌握的知識就是“怎樣在屬性對話框xx,對控件的屬性進行賦值”。下面,我們還要為控件的屬性賦值,但賦值的方法有 所不同,請注意體會以下賦值方法與上面的區(qū)別。三、屬性賦值方法之二 請撤消前面添加“開始運行”屬性的操作,回到按鈕表面提示文字仍然是“CommandButton”1 時的狀態(tài),雙擊“ CommandButton”1 將打開“CommandButton”1 的代碼窗口,代碼窗口已為我們生成了控件被單擊時的空過 程?,F(xiàn)在,我們就在這個“ CommandButton”1 的 Click 事件(即按鈕被單擊的事 件)空過程中,添

45、加如下的代碼:''' =用代碼修改屬性 =Private Sub CommandButton1_Click()CommandButton1.Caption = " 開始運行 "End Sub 本實例之初,我們學習了為對像的屬性賦值的格式,那么,您看到代碼 “CommandButton1.Caption = " 開始運行 " ”時,應該不難理解吧?代碼中的WORD-VBA 編程 -從零開始學 VBAComma ndButto n1是指窗體上的那個按鈕,如果有多個按鈕的話,就會分別被命名 為CommandButton2 Command

46、Button3等等。如果要解釋上面的程序,就應該 是:當按鈕被“ Click ”(單擊)時,按鈕的“ Caption ”(提示文字)就被改變 為“開始運行”。運行本程序并單擊按鈕看看出現(xiàn)了什么效果?在按鈕被單擊前, 運行的效果與第 1 步一樣(與圖 4-2 左面相同。);當按鈕被單后,是不是與第 2 步運行時的情況一樣? (與圖 4-2 右面相同。 )第 2 步中, 我們是“先設(shè)計好了” 按鈕的提示文字再運行;第 3步中,我們根本沒有“設(shè)計”按鈕的提示文字,而 是已經(jīng)“在窗體運行的時候”利用了按鈕的單擊事件,改變了按鈕表面的提示文 字。對于第 2 步中的做法,我們稱之為“設(shè)計時”修改控件,對于

47、第三步中的做 法,我們稱之為“運行時”修改控件?!霸O(shè)計時”修改控件的屬性雖然更方便、 更容量掌握,但它往往沒有“運行時”修改控件屬性那么靈活。下面我們再做一 個例子,動態(tài)改變按鈕與窗體的屬性值。再體會體會“運行時”修改屬性值的靈 活性。將前面的代碼修改如下:=利用單擊按鈕事件,動態(tài)改變按鈕名與窗體顏色Private Sub CommandButton1_Click()If CommandButton1.Caption = "CommandButton1" ThenCommandButton1.Caption = " 開始運行 "ElseIf Comman

48、dButton1.Caption = " 開始運行 " ThenCommandButton1.Caption = " 點我干嘛,別煩我! "ElseIf CommandButton1.Caption = " 點我干嘛,別煩我! " ThenUserForm1.BackColor = RGB(255, 128, 128)想讓我給你點顏色嗎? " ThenCommandButton1.Caption = " 想讓我給你點顏色嗎? "ElseIf CommandButton1.Caption = "U

49、serForm1.BackColor = RGB(0, 128, 64)CommandButton1.Caption = " 你真的不怕我變臉嗎? "ElseIf CommandButton1.Caption = " 你真的不怕我變臉嗎? " ThenUserForm1.BackColor = RGB(128, 0, 255)CommandButton1.Caption = " 怕了你了,我逃! "Else: CommandButton1.Caption = " 怕了你了,我逃! "Unioad UserForml

50、'“ Unioad”是窗體的一個方法,其作用是卸載窗體。End IfEnd Sub本程序中用到了窗體的顏色屬性(BackColor)及其屬性值(RGB的知識, 我們在利用VBA對Word中的文字進行修飾時,經(jīng)常會用到顏色屬性及其值的設(shè)置, 這里正好學習一下。代碼最后的“ Uni oad ”是窗體的一個方法,其作用是卸載窗 體,與平時我們關(guān)閉窗體時按右上角最大、最小化按鈕那里的“X”按鈕等價。有卸載就有加載,加載并顯示窗體的命令是“ Show”,該命令的使用格式是“窗體 名.Show”。本實例的知識擴展: 1、朋友們在“設(shè)計時”屬性設(shè)置中, 下點功夫摸索摸索, 盡快熟悉窗體、 按鈕的各種

51、屬性; 2、本例只用到了“控件工具箱”中的按鈕控件, 其它的控件雖然在作用上各不相同,但在使用的方法上與按鈕控件沒有什么大的 區(qū)別,朋友們就自己嘗試一下其它的控件吧; 3、請您制作一個窗體,上面加上兩 個按鈕,一個按鈕運行實例 xx 的游戲,另一個按鈕退出游戲。實例四到此結(jié)束,怎么樣,有收獲嗎?下一個實例“Word版的媒體播放器”,將是我們前面知識的一個集中練習,也將是一個會讓您很有“成就感”的練習。 還等得及嗎?從零開始,步入Word宏編程的世界(第五講)實例五:Word版的“媒體播放器”知識點:1、進一步熟悉VBE的操作界面;2、學習使用窗體與控件進行編程;3、學習運用附加的控件進行編程。

52、WORD-VBA編程-從零開始學VBA通過以上四個實例的學習,今天,我們終于迎來了激動人心的時刻一一編寫 一個“ Word版的媒體播放器”! “媒體播放器”大家不會陌生吧?對,就是開始 程序附件娛樂中的“ Media player播放器”!相信本實例會給您帶 來成就感!也算是對我們前四個實例辛苦學習的一點點回報吧!當然,在高興之 余,千萬不要忘了對本實例中知識點的學習。其實,本實例中,理論知識上的難 度幾乎沒有,但操作上的步驟卻相當多,朋友們耐心一點。步驟一:界面的制作1、回憶實例xx的操作方法,在VBExx添加一個窗體,窗體上添加兩個按鈕。 將窗體的“ Caption ”屬性改為“ Word

53、版媒體播放器”,再分別將兩個按鈕的“Caption ”屬性改為“開始運行”與“結(jié)束程序”。2、右擊控件工具箱,選“附 加控件”,將“附加控件”面板的滾動條拖動到最底端, 然后選xx “WindowsMedia player ”控件?!按_定”后,退出“附加控件”面板(圖 5-1)。這時控件工具箱 最下面就多出了一個網(wǎng)格狀的“ Windows Media player ”控件。3、選中“ Windows Media player ”控件,在窗體上按您的需要和喜好“畫” 出它將要顯示的范圍。4、現(xiàn)在,我們就可以利用“屬性對話框”開始對整個窗體 及窗體上所有的控件進行“ xx”?!?xx”的內(nèi)容就按您

54、自己的喜好看著辦好了,WORD-VBA 編程 -從零開始學 VBA 反正是“設(shè)計時”修改控件,不會影響最終程序的運行。我修改了窗體和按鈕的 顏色,并修改了按鈕上的字體以及字號和字色。最終的效果如圖 5-2 。準備工作已就緒,開始編寫代碼了吧!步驟二:編寫代碼1、雙擊“開始運行”按鈕,在 VBE自動生成的空過程中輸入如下代碼:Private Sub CommandButton1_Click() MediaPlayer1.FileName = "D:MyMpgxx2.mpg " End Sub( 注意 : office2003 及以上版本, xx 代碼應該是: WindowsM

55、ediaPlayer1.URL="D:MyMpgxx2.mpg " ,這是因為在這些版本上, MediaPlayer 控件的屬性與方法已略有些變化了。 )代碼解說:關(guān)于“過程”,就不消多說了吧?“ MediaPlayer1 ”就是我們在 “設(shè)計時”所添加的“ MediaPlayer 控件”。它尾巴上的“ 1 ”,指它是在本窗體 上的第一個“ MediaPlayer 控件”?!?FileName”是“ MediaPlayerl ”的一個屬 性,這個屬性的值就是將要播放的媒體文件的名稱 (還記得為屬性賦值的格式嗎? 這整句代碼可是一個標準的賦值語句。)。等號后面大家就很清楚了是

56、要播 放的文件的路徑與文件名。當然,您的電腦上恐怕不會有“ D:xx2.mpg”文件的,您可要根據(jù)自己電腦上的實際情況輸入這部分的內(nèi)容。2、雙擊“結(jié)束程序”按鈕,在打開空過程中輸入Private Sub CommandButton2_Click()Unload UserForm1End SubWORD-VBA 編程 -從零開始學 VBA代碼解說:這段代碼如果還需要解說的話,就請再看看實例四的后半部分內(nèi) 容。完成前兩步代碼輸入后,可以將光標定位于“開始運行”按鈕的代碼區(qū)正中 間,然后按下 F5 鍵!看到了什么?怎么樣,有成就感吧?還沒完呢!趕快“結(jié)束程序”編完最后的代碼吧! 3、回到Word指向

57、工具一一宏,打開“宏名” 對話框(不要告訴我, 你找不到這個對話框) ,在“宏名”中輸入“我的播放器”(沒有引號),點擊“創(chuàng)建”按鈕,在 VBE所生成空過程中輸入一一Sub 我的播放器 ()UserForm1.ShowEnd Sub本段代碼與上段代碼一樣,也無需解說了吧?4、回到Word打開工具一一自定義,拖動“命令”選項卡的滾動條到最底部, 選中“類別”窗格中的“宏”,再找到右邊“命令”窗格中的“我的播放器”宏, 左鍵按住它, 不要讓它跑掉 (?),拖動它到“任意”的“菜單欄”或“工具欄” 上,好,松左鍵,它跑不掉了(圖 5-3 ) 。保證它是被選中的,再回到“命令”選 項卡上,點擊正中間的

58、“更改所選內(nèi)容”,把它的名字“ xx” 一下,或者再給它 添一個圖標,怎么樣,帥吧?!酷吧?! (圖 5-4)2l2<J修訂合并文襠迎 保護文檔 聯(lián)機協(xié)作®郵件合并迅一旦信封和標簽(1).中文信封向?qū)щ姡┯⑽男藕驅(qū)мx工具欄型 命令©選項匹類別©控件工具箱 所有命令自動閨文集 祥式 內(nèi)置菜單 新菜單選它和它|品Fro j小模曲我的擢_|XI所選命令:模樓和抑蠡項抵) 自定義© 選項©一更改所選內(nèi)容迎二J要注嶽它創(chuàng)保存于:匡檔i榕式 工具 表格® 窗口迥 幫助 自動滾動®“reject.糧甌去的輜於黠自定史HO I I

59、121 I 14 I I 1G I I 1B五號-B Z U - A| jfi工具欄匹I命箸重新設(shè)匿血 刪除命名追):Froj m.模塊1一我的?復制按訊團標C) 粘貼按鈕圖標電) 復位按鈕圖標 蝙輯按鈕團標Q 更改羥訊團標更)3 30 I32 |134 I I 36 I I 3SW辭器箱T蘇澤文字默認樣式也)在菜單中只用文字) 團標與文字®我她:;:,:;: d|所選命令:說明WORD-VBA編程-從零開始學VBAWord圖邊 插A(X)格式功工具E 表格 窗口 幫助QD自動滾動 鳥簡尊芷電譚哼和語號ft語呂U字數(shù)頸計>10 I I 112苕自動舖寫摘要an.自動更正WORD-VBA 編程 -從零開始學 VBA5、從此之后,xx和公主就在您的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論