




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VBA基礎(chǔ)入門(mén) VBA的功能實(shí)在太強(qiáng)大,可初學(xué)的我們,面對(duì)那一串串尤如外星文的代碼,你是不是看得頭昏腦脹?想學(xué),是不是卻茫然得找不到入口? 在這里,我把我自己的學(xué)習(xí)心得和筆記放出來(lái),和大家一起分享交流,一起學(xué)習(xí),共同進(jìn)步。對(duì)了,還要告訴大家,我也是初學(xué)者,不是高手,如果有什么說(shuō)得不對(duì)的,希望大家及時(shí)指出。我的目的不是教學(xué),而是期望創(chuàng)造一個(gè)有你,有我,有他的學(xué)習(xí)氛圍! 開(kāi)始吧,記住一個(gè)共同的目標(biāo)掀開(kāi)那層神秘的面紗,看看VBA的真實(shí)面目。-貼子內(nèi)容- 1、什么是VBA?為什么要學(xué)習(xí)VBA 2、VBA
2、與宏 3、VBE簡(jiǎn)介 4、對(duì)象、屬性、方法、事件 5、VBA過(guò)程 6、數(shù)據(jù)類(lèi)型、變量、數(shù)組、常量 7、(回復(fù))該定義變量為何種數(shù)據(jù)類(lèi)型 8、VBA的函數(shù) 9、程序流程控制:if語(yǔ)句 10、程序流程控制:Select Case語(yǔ)句 11.程序流程控制:Fornext語(yǔ)句 12、幾個(gè)fornext 循環(huán)的例子(作者:老朽 13、程序流程
3、控制:ForEach語(yǔ)句 14、程序流程控制:Do While語(yǔ)句 15、程序流程控制:Do Until語(yǔ)句 16、程序流程控制:Go to 語(yǔ)句 17、用戶(hù)窗體 18、再說(shuō)Excel的對(duì)象模型 19、小試牛刀制作一個(gè)個(gè)性化的歡迎界面20、處理單元格數(shù)據(jù)(復(fù)制、剪切、刪除 21、Range對(duì)象的End 屬性(帶作業(yè)) 22、花名冊(cè)分類(lèi)(實(shí)例) 23、花名冊(cè)匯總(實(shí)例
4、; 24、新建工作表2 / 113 25、認(rèn)識(shí)數(shù)組(一) 26、Worksheet的Change事件(帶作業(yè)) 27、關(guān)于Application.EnableEvents屬性(有實(shí)例動(dòng)畫(huà)) Application.EnableEvents補(bǔ)充說(shuō)明 28、關(guān)于Worksheet的SelectionChange事件(有實(shí)例動(dòng)畫(huà))&
5、#160; 29、Worksheet的SelectionChange事件實(shí)例(trustwxq 朋友提供)什么是VBA?為什么要學(xué)習(xí)VBA? = VBA是Visual Basic For Application的簡(jiǎn)稱(chēng),具體說(shuō)來(lái),可能讓葉楓三天三夜也說(shuō)不完,葉楓也只知道VBA是建立在Office中的一種應(yīng)用程序開(kāi)發(fā)工具,其實(shí)知道這也就夠了。很懶很笨的葉楓只想吃香噴噴的大米飯,可從沒(méi)想要知道大米飯是怎么來(lái)的。
6、; Excel本身的內(nèi)置函數(shù)其實(shí)已經(jīng)很強(qiáng)大了,甚至有人說(shuō),只要學(xué)會(huì)二三十個(gè)函數(shù),就已經(jīng)可以滿(mǎn)足普通用戶(hù)日常的工作需求。 那我們?yōu)槭裁匆獙W(xué)VBA? 是的,如果只需要滿(mǎn)足一些普通的工作需求可能永遠(yuǎn)也不會(huì)用到VBA,但在實(shí)際應(yīng)用的過(guò)程中,人們的操作卻越來(lái)越大,需要也越來(lái)越高,這時(shí)候就需要用VBA來(lái)對(duì)Excel進(jìn)行二次開(kāi)發(fā)了,VBA可以有效地自定義和擴(kuò)展Excel的功能。但有一點(diǎn)葉楓想要告訴大家,VBA功能很強(qiáng)大,但并不是萬(wàn)能的,也并不是所有工作都需要用VBA來(lái)解決,也并不是所有工
7、作用VBA來(lái)解決都會(huì)很簡(jiǎn)單,這要根據(jù)實(shí)際情況而定,有些工作你用VBA來(lái)解決的話(huà)相反會(huì)變得很麻煩。VBA與宏剛開(kāi)始的內(nèi)容聽(tīng)起來(lái)很枯燥,請(qǐng)大家不要分心,耐著性子看下去,興趣總是慢慢積累的。 1、親自動(dòng)手,錄制一段屬于自己的宏提到VBA,相信很多人想到的就是宏,但是VBA與宏是不是一回事?我覺(jué)得它們不是一回事,但這不重要,我們要做的是先來(lái)認(rèn)識(shí)一下宏。宏是什么?我理解的宏是一系列固定動(dòng)作的集合,這個(gè)集合當(dāng)遇到讓他執(zhí)行的條件后就逐個(gè)執(zhí)行。有人把我們錄制的宏比喻成一個(gè)武術(shù)運(yùn)動(dòng)員在比賽中練就的一段武術(shù)套路動(dòng)作,這個(gè)套路遇到一定的條件(比賽)就執(zhí)行。好了,別
8、閑著,動(dòng)一動(dòng)你可愛(ài)的右手,點(diǎn)點(diǎn)鼠標(biāo),打開(kāi)一個(gè)Excel文件,錄制一段宏來(lái)來(lái)研究研究,步驟如下:(1)選中任意一個(gè)單元格;(2)打開(kāi)菜單>工具>宏>錄制新宏,調(diào)出宏錄制對(duì)話(huà)框,輸入宏名(mysub),確定;(3)設(shè)置單元格字體為仿宋體,紅色;(4)點(diǎn)擊停止錄宏。這樣,一個(gè)簡(jiǎn)單的設(shè)置單元格格式的宏就錄好了。- 2、鼠標(biāo)點(diǎn)一點(diǎn),宏給單元格換新裝下面我們來(lái)執(zhí)行這段宏。(1)選中需要設(shè)置的任意單元格或單元格區(qū)域(為了看出效果,單元格最好有字符);(2)打開(kāi)菜單>工具>宏>宏,顯示“宏”對(duì)話(huà)框(快捷鍵:Alt+F8);(
9、3)選擇我們剛才錄制的宏,單擊“執(zhí)行”。這樣我們看到已經(jīng)為剛才選中的單元格的字體已被修改成仿宋體,紅色。自己動(dòng)手試著錄制幾段宏,再執(zhí)行一下,加深印象。神奇了吧?以后當(dāng)你再需要一遍又一遍地重復(fù)若干相同的操作的時(shí)候,會(huì)不會(huì)想到讓宏來(lái)替你做這一切?這是一個(gè)不錯(cuò)的奴隸,不用花錢(qián),且不用開(kāi)工資,賺了吧?好了,收起你貪婪的笑容,繼續(xù)往下看。宏是什么?現(xiàn)在相信你能想出一千種說(shuō)法,由你了,又笨又懶的葉楓可沒(méi)你聰明,也不再多說(shuō)。上面說(shuō)的執(zhí)行宏的過(guò)程是不是讓你感覺(jué)很麻煩?希望用快捷鍵來(lái)控制宏?這個(gè)我們可以在錄制宏之前在錄制宏對(duì)話(huà)框里進(jìn)行設(shè)置。也可以在錄制宏后進(jìn)行設(shè)置,按Alt+F8顯示宏對(duì)話(huà)框,單擊“選項(xiàng)”,在“
10、宏選項(xiàng)”對(duì)話(huà)框里進(jìn)行設(shè)置- 3、尋根問(wèn)底,找到宏的老窩如果你忘記了,請(qǐng)你再打開(kāi)宏錄制對(duì)話(huà)框,在宏名的下面,有一個(gè)“保存在”的選項(xiàng),點(diǎn)一點(diǎn)下拉的箭頭,我們可以看到,宏可以保存在三種不同的位置,分別是:(1)當(dāng)前工作簿(系統(tǒng)默認(rèn)):宏保存在當(dāng)前工作薄的模塊里,只有當(dāng)該工作薄打開(kāi)時(shí),宏才起作用。(2)新工作簿:新建一個(gè)工作薄保存。 (3)個(gè)人宏工作簿:這是為宏而設(shè)計(jì)的一種特殊的具有自動(dòng)隱藏特性的工作簿,如果你要讓某個(gè)宏在多個(gè)工作簿都能使用,那么就應(yīng)當(dāng)創(chuàng)建個(gè)人宏工作簿,并將宏保存于其中。上面我們錄制的宏是保存在當(dāng)前工作薄里,今天我們?cè)谶@里也只介紹保存在
11、當(dāng)前工作表里的宏。- 4、撥開(kāi)層層迷霧,查看廬山真面目宏靠什么來(lái)控制Excel的運(yùn)行?是不是感覺(jué)深在濃濃的迷霧里,感覺(jué)一頭霧水?讓我們鼓一鼓勁,撥開(kāi)它的衣服,開(kāi)開(kāi)那家伙里面到底是什么?(1)按Alt+F8快捷鍵打開(kāi)“宏”對(duì)話(huà)框;(2)選擇我們剛才錄制的宏,點(diǎn)“編輯”按鈕。眼前一亮吧?這是一個(gè)新的天地VBA的編輯器窗口(VBE),這個(gè)我們以后再說(shuō),先將注意力集中到顯示的代碼上。代碼如下: 復(fù)制內(nèi)容到剪貼板 代碼:Sub mysub()' mysub Macro' 宏由ggsmart錄制,時(shí)間: 2009-2-27'With
12、 Selection.Font.Name = "仿宋_GB2312".Size = 12.Strikethrough = False.Superscript = False.Subscript = False.OutlineFont = False.Shadow = False.Underline = xlUnderlineStyleNone.ColorIndex = xlAutomaticEnd WithSelection.Font.ColorIndex = 3End Sub現(xiàn)在你可能感覺(jué)到上面這些亂七八糟的代碼會(huì)很陌生,甚至在問(wèn)自己是不是來(lái)到外星人的世界,反正葉楓當(dāng)初是
13、這樣感覺(jué)的,但不要為此感到害怕,將來(lái)我們會(huì)慢慢熟悉他,就像閉上眼睛也能準(zhǔn)確地將那個(gè)又大又紅的蘋(píng)果送到自己的嘴里。- 5、再進(jìn)一步,給宏安上門(mén)鈴一遍一遍地在宏對(duì)話(huà)框里選擇宏名稱(chēng),按“執(zhí)行”按鈕來(lái)運(yùn)行宏的麻煩是不是讓你郁悶得有些想吐血?指定快捷鍵雖然方便,但別人用自己的工作表時(shí)能不能快速上手?就算是自己,如果宏多了,或是放的時(shí)間長(zhǎng)了,你還記得哪個(gè)快捷鍵控制哪個(gè)宏?作為excel開(kāi)發(fā)者,一個(gè)主要的目標(biāo)是為自動(dòng)化提供一個(gè)易于操作的界面,“按鈕”是最常見(jiàn)的界面組成元素之一,我們可以把宏指定給特定的按鈕,通過(guò)按鈕來(lái)執(zhí)行宏,還是用剛才我們錄制的那個(gè)宏來(lái)舉例。
14、通過(guò)使用“窗體”工具欄,可以為工作簿中的工作表添加按鈕。在創(chuàng)建完一個(gè)按鈕后,可以為它指定宏,然后你的用戶(hù)就可以通過(guò)單擊按鈕來(lái)執(zhí)行宏。在本練習(xí)中,將創(chuàng)建一個(gè)按鈕,并為它指定一個(gè)宏,然后用該按鈕來(lái)執(zhí)行宏。具體步驟如下:(1)打開(kāi)菜單>視圖>工具欄>窗體,調(diào)出窗體工具欄。 1.jpg (7 KB)(2)單擊”窗體“工具欄中的“按鈕”控件,在工作表中希望放置按鈕的位置按下鼠標(biāo)左鍵,拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)按鈕,松開(kāi)鼠標(biāo)后,Excel會(huì)自動(dòng)顯示“指定宏”對(duì)話(huà)框。 2.j
15、pg (31.38 KB) (3)從“指定宏”對(duì)話(huà)框中選擇“mysub”,單擊“確定”。這樣,就把該宏指定給命令按鈕。 引用:課間休息,插播一段廣告:按鈕,工作表等這些對(duì)象就像是Excel的眾多兒女,兒女太多,怎么稱(chēng)呼這群兒女也是一個(gè)問(wèn)題為了不出現(xiàn)叫兒子就七八個(gè)一起跑出來(lái),同許多農(nóng)村父母給兒女起老大,老二,老三的稱(chēng)呼一樣,xcel也用這種順序的起名方法給這些兒女貼上了標(biāo)簽比如第一個(gè)按鈕是按鈕一,再畫(huà)一個(gè)就是按鈕二,然后是按鈕三,銨鈕四等等這樣,以后你要叫第三個(gè)兒子的時(shí)候直接叫按鈕三即可如果你嫌這個(gè)名字鄉(xiāng)下味太濃,如果你嫌這個(gè)名字不能很好地反映點(diǎn)擊它后會(huì)執(zhí)行怎樣的操作不清楚
16、,你可以通過(guò)雙擊按鈕表面激活它,可重新為按鈕貼上合適的顯示標(biāo)簽需要提醒你的是,這里的標(biāo)簽只是它顯示在你面前的樣子,實(shí)際上它是什么名字?我們可以點(diǎn)擊它,看一下名稱(chēng)框里是什么 3.jpg (16.03 KB) 為什么顯示出來(lái)的是一樣,而實(shí)際的名字卻是另一樣呢?也許你現(xiàn)在會(huì)感到迷茫,但不用管它,以后當(dāng)我們學(xué)習(xí)了屬性后,一切就自然明白了 下面我們來(lái)試一試用按鈕操作: (1)選擇單元格或單元格區(qū)域; (2)單擊按鈕。4.jpg (61.93 KB)按鈕就像裝在樓下的門(mén)鈴,美麗的嫦娥仙子家住在502,豬八
17、戒來(lái)到樓下,找準(zhǔn)號(hào)碼502,輕輕一按,“叮咚,叮咚”,嫦娥在樓上就給八戒開(kāi)門(mén)了,八戒不用在樓下大聲地喊“嫦娥,開(kāi)門(mén)。”也不用花兩毛錢(qián)給嫦娥打個(gè)電話(huà),當(dāng)然更不用順著下水管從墻上爬進(jìn)嫦娥的窗戶(hù),方便而實(shí)在吧?這種遙控式的命令的確能讓繁瑣的操作變得簡(jiǎn)單而方便,讓我們獲得了一些使用Excel標(biāo)準(zhǔn)命令所不能實(shí)現(xiàn)的功能。如果你是八戒,當(dāng)你熟悉了如何使用這種遙控一樣的門(mén)鈴以后,你可能都會(huì)奇怪自己當(dāng)初在沒(méi)有門(mén)鈴的情況下,那段漫長(zhǎng)的爬下水管道的日子是怎么熬過(guò)來(lái)的。讓嫦娥仙子開(kāi)門(mén)的方法有很多種,同樣執(zhí)行宏也有多種方法可以選擇,我們還可以把宏指定給圖片,自選圖形,這些比較簡(jiǎn)單,和指定給窗體按鈕是一樣的,同時(shí)我們還可
18、以把宏指定給某個(gè)“事件”,比如單擊工作表,雙擊工作表,激活工作表,打開(kāi)工作簿等等,你要安什么要的門(mén)鈴,選什么樣的音樂(lè),隨你了。需要強(qiáng)調(diào)一點(diǎn)的是,我們剛說(shuō)的“事件”是一個(gè)重要的概念,八戒按門(mén)鈴,就是一個(gè)“事件”,這個(gè)“事件”引發(fā)了嫦娥的開(kāi)門(mén),只有門(mén)鈴響了,嫦娥才會(huì)去開(kāi)門(mén)。除此而外“方法”“對(duì)象”“屬性”都是接下來(lái)我們會(huì)經(jīng)常接觸到的,慢慢走,留心點(diǎn),一路上將會(huì)精彩不斷。- 6、小結(jié)到這里,我們對(duì)宏應(yīng)該有一個(gè)簡(jiǎn)單的了解了吧?宏實(shí)際上就是一個(gè)簡(jiǎn)單的VBA的Sub過(guò)程,它保存在模塊里,以Sub開(kāi)頭,以End Sub結(jié)尾,執(zhí)行時(shí)就從第一句逐句執(zhí)行,直到End
19、Sub結(jié)束。就像前面我們說(shuō)的武術(shù)運(yùn)動(dòng)員練的那段套路動(dòng)作,總是抱拳,扎馬,出拳然后踢腿,永遠(yuǎn)不可能沒(méi)有扎馬就出拳,沒(méi)有出拳就踢腿。我們今天錄的這段宏也總是先設(shè)字體,再改字體顏色,這種順序永遠(yuǎn)不會(huì)亂。說(shuō)完這些,你是不是感覺(jué)這些操作古板得沒(méi)有生氣?是不是感覺(jué)這宏的操作不能滿(mǎn)足自己的需求?葉楓想告訴你的是,宏代碼絕不等于VBA,它只是VBA里最簡(jiǎn)單的運(yùn)用,盡管許多Excel過(guò)程都可以用錄制宏來(lái)完成,但是通過(guò)宏代碼還是無(wú)法完成許多的工作,如:(1)不可以建立公式,函數(shù);(2)沒(méi)有判斷或循環(huán)的功能;(3)不能進(jìn)行人機(jī)交互;(4)無(wú)法顯示用戶(hù)窗體;(5)無(wú)法與其他軟件或文件進(jìn)行互動(dòng)。
20、; .所以,你看了上面的內(nèi)容后千萬(wàn)不要以為宏就是VBA了,更不要以為自己已經(jīng)會(huì)VBA了,事實(shí)上是你才剛沾上VBA的邊,或者說(shuō)連邊都沒(méi)沾上,甚至連宏今天我們都只是作了簡(jiǎn)單的介紹。路漫漫其修遠(yuǎn)兮,還等著我們上下去求索,路在腳下,武林高手總是從練習(xí)簡(jiǎn)單的套路動(dòng)作開(kāi)始,不要厭倦扎馬的單調(diào),靜下心多練練,這會(huì)是你以后練習(xí)武功招式的一個(gè)基礎(chǔ),孔子老人家說(shuō)了,要溫故而知新,記得復(fù)習(xí)鞏固,不要學(xué)了后面忘了前面,到下次葉楓再見(jiàn)到你的時(shí)候你什么都忘記了,好了,今天就到這里,讓我們一起加油VBE簡(jiǎn)介=什么是VBE?相信你還沒(méi)忘記吧?VBE就是VBA的編輯窗口,所有的VBA操作都在VBE里完
21、成。VBE是一個(gè)分離出來(lái)的應(yīng)用程序,它可以與Excel無(wú)縫結(jié)合,但是需要說(shuō)明的是要運(yùn)行VBE必須先運(yùn)行Excel,VBA模塊與Excel工作薄文件一起存儲(chǔ),除非激活VBE,否則VBA模塊是看不見(jiàn)的。1、運(yùn)行Excel后,怎樣切換換到VBE窗口?打開(kāi)大門(mén)的鑰匙有很多把,千萬(wàn)別猴急地去爬下水管道。(1)按ALT+F11快捷鍵;(2)選擇“工具”>“宏” >“Visual Basic編輯器”命令。 1.jpg (29.14 KB)(3)右擊工作表名稱(chēng)標(biāo)簽,點(diǎn)擊查看代碼。 2.jpg (1
22、7.69 KB)(4)單擊控件工具箱里的“查看代碼”。 3.jpg (28.24 KB)如果你的窗口里找不到控件工具箱,請(qǐng)通過(guò)“視圖”>“工具欄” >“控件工具箱”打開(kāi)它。 4.jpg (35.59 KB)(5)通過(guò)控件工具箱建立一個(gè)新的控件,雙擊控件。 5.jpg (36.24 KB) 2、初識(shí)VBE窗口 這個(gè)界面相信你不陌生吧?查看宏的時(shí)候我們已經(jīng)見(jiàn)識(shí)過(guò)它了。
23、 6.jpg (85.09 KB) “工程資源管理器”顯示一個(gè)樹(shù)型圖示,包含了當(dāng)前在Excel中打開(kāi)的所有Excel對(duì)象,包含工作表,模塊,窗體,加載宏及隱藏的工作薄,每個(gè)工作薄被認(rèn)為是一個(gè)工程。 在工程資源管理器里右擊,可以在右鍵菜單里選擇相應(yīng)的命令插入模塊或窗體。如果你想刪除它或者保存它,同樣也可以在這里進(jìn)行相應(yīng)的操作。 7.jpg (30.89 KB) “屬性窗口”顯示當(dāng)前你選擇的Excel對(duì)象的屬性
24、。選中某個(gè)對(duì)象后,可以在屬性窗口中修改選中的對(duì)象的的各樣屬性如顏色,名稱(chēng)等。8.jpg (37.77 KB) “立即窗口”,這是一個(gè)非常有用的窗口,在其中可以直接執(zhí)行VBA語(yǔ)句,測(cè)試語(yǔ)句和調(diào)試代碼,就跟我們?cè)贒OS下輸入DOS命令一樣。如果你的立即窗口不可見(jiàn),按CRTL+G調(diào)出來(lái),可以在里面嘗試輸入: a1=”我在學(xué)習(xí)VBA” 回車(chē),看一看A1單元格里發(fā)生了什么變化?9.jpg (36.51 KB) “代碼窗口”是干嘛用的?相信你已經(jīng)很清楚了,當(dāng)然是用來(lái)編輯VBA代碼的地方
25、,工程中的每一項(xiàng)都有一個(gè)與之相關(guān)聯(lián)的代碼窗口, 如果要查看某對(duì)象的代碼窗口,或者說(shuō)如果要查看某對(duì)象上面究竟編寫(xiě)了什么VBA代碼,在“工程資源管理器”窗口中雙擊對(duì)象即可。10.jpg (30.07 KB)當(dāng)然,你打開(kāi)后的窗口不一定和上面一樣,VBE的窗口也不只上面幾個(gè),我們可以打開(kāi)“視圖”菜單,在里面進(jìn)行選擇需要顯示的窗口。對(duì)象、屬性、方法,事件 這是很重要的幾個(gè)概念,是寫(xiě)VBA程序的基礎(chǔ),大家仔細(xì)讀,一定要弄清楚。 1、對(duì)象
26、及對(duì)象層次結(jié)構(gòu) 對(duì)象就是存在的東西,是VBA處理的內(nèi)容,包括工作薄、工作表、工作表上的單元格區(qū)域、圖表等等。對(duì)象可以相互包含,就像一個(gè)文件夾里可以包含多個(gè)文件夾一樣,而這個(gè)文件夾又可以被其他的文件夾包含,一個(gè)工作薄對(duì)象可以包含多個(gè)多個(gè)工作表對(duì)象,一個(gè)工作表對(duì)象又可以包含多個(gè)單元格(或圖表,圖形等),這種對(duì)象的排列模式稱(chēng)為Excel的對(duì)象模型。- 集合這個(gè)概念經(jīng)常遇到,我理解的集合是對(duì)相同類(lèi)型的對(duì)象的統(tǒng)稱(chēng)。 某中學(xué)有5000個(gè)學(xué)生,名字各不相同,我們對(duì)
27、他都統(tǒng)稱(chēng)為某中學(xué)的學(xué)生,而不和一一去叫他們的名字,"某中學(xué)的學(xué)生"在這里是集合。 對(duì)象的引用,在Excel里,Workbooks集合包含在Application對(duì)象里,當(dāng)我們要引用某工作薄的時(shí)候,要遵循從大到小的規(guī)則。跟表示硬盤(pán)里的某個(gè)文件的位置一樣,比如我們想引用D盤(pán)“我的文檔”文件夾下的名為“我的VBA課程.doc”文件時(shí)要輸入的是: D:我的文檔我的VBA課程.doc 同樣,如果我們要引用名稱(chēng)為“mybook.xl
28、s”的工作薄時(shí)就是: Application.Workbooks(“mybook.xls”) 和引用文件不同的是,VBA里使用的分隔符是點(diǎn)。 同理,當(dāng)我們引用“mybook.xls”里面的工作表“mysheet”時(shí)應(yīng)是: Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”)
29、; 可以繼續(xù)延伸到下一層,引用“mybook.xls”里工作表“mysheet”里面的單元格區(qū)域“A1:D10”: Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”).Range(“A1:D10”) 但是并不是每一次引用都必須這么呆板,就像豬八戒不用每一次都去爬下水管道。如果我們引用的是活動(dòng)對(duì)象,也就是被激活的對(duì)象,引用就可以進(jìn)行簡(jiǎn)化。 如果是mybook工作薄是激
30、活的,引用可以簡(jiǎn)化為 Worksheets(“mysheet”).Range(“A1:D10”) 如果mysheet當(dāng)前也是激活的,引用甚至還可以簡(jiǎn)化為Range(“A1:D10”) ,也可以直接輸入A1:D10 ,如果引用的單元Range是單個(gè)的單元格,還可以用Cells(行號(hào),列號(hào))的引用方式。-2、屬性 每一個(gè)對(duì)象都有屬性,一個(gè)屬性就是對(duì)一個(gè)對(duì)象的一個(gè)設(shè)置。 豬八戒背著媳婦高秀蘭回自己的紫云洞,豬八戒的媳婦就是對(duì)
31、象,“高秀蘭”就是豬八戒的媳婦的一個(gè)屬性(name屬性),引用對(duì)象的屬性同樣也要用點(diǎn)來(lái)分隔。 豬八戒的媳婦.name高秀蘭 別閑著,還是動(dòng)動(dòng)你的右手,打開(kāi)一個(gè)工作表,Alt+F11(千萬(wàn)別說(shuō)你不知道這個(gè)快捷鍵是干什么,要不我保證被你氣個(gè)半死),如果立即窗口沒(méi)有打開(kāi),按Ctrl+G打開(kāi),在里面輸入: 復(fù)制內(nèi)容到剪貼板 代碼: Msgbox Worksheets(1).name回車(chē)。1.jpg (53.4 KB)
32、160; Worksheets(1)和Worksheets(“sheet1”)有什么區(qū)別? Worksheets(1)表示W(wǎng)orksheets集合里的第一個(gè)工作表。 Worksheets(“sheet1”)表示W(wǎng)orksheets集合里名為"sheet1"的工作表。 至于Msgbox是什么,那就自己?jiǎn)朒elp了,在立即窗口里用鼠標(biāo)左鍵把Msgbox抹黑,按F1,就彈出Help里對(duì)它的說(shuō)明了。
33、 抹黑代碼,再按F1即可看到相應(yīng)的幫助。葉楓說(shuō):“這個(gè)辦法很適用,一般人我不告訴他?!?.jpg (42.52 KB) 一個(gè)對(duì)象有哪些屬性我們可以在屬性窗口里查看,要修改一個(gè)對(duì)象的某種屬性,如名稱(chēng)、顯示狀態(tài)、顏色等等,也可以在屬性窗口里進(jìn)行修改,當(dāng)然我們還可以利用代碼進(jìn)行修改。改當(dāng)前工作薄里的第三個(gè)工作表的名稱(chēng)為“這個(gè)名字是我用VBA改的”,想想怎么寫(xiě)代碼? 把你的代碼輸在立即窗口里,回車(chē),看看效果,你做到了嗎?-3、方法 每一個(gè)對(duì)象都有方法,方法就是在對(duì)象
34、上執(zhí)行的某個(gè)動(dòng)作。 和屬性相比,屬性表示的是對(duì)象某種狀態(tài)或樣子,是靜態(tài)的,就像是語(yǔ)文里的名詞、形容詞和副詞,而方法則是做某件事的一個(gè)動(dòng)作,就像動(dòng)詞,對(duì)象和方法同樣用點(diǎn)來(lái)分隔。 例如Range對(duì)象有有一個(gè)方法是Select,他的作用是選中指定的Range(單元格區(qū)域)對(duì)象,在立即窗口里輸入代碼: 回車(chē),可以看到D1:F10已經(jīng)被選中了。3.jpg (36.23 KB)-4、事件 在上一面豬八戒按門(mén)鈴那里,我們已經(jīng)接觸過(guò)什么是事件了。
35、 簡(jiǎn)單點(diǎn)說(shuō),事件就是由用戶(hù)或者系統(tǒng)觸發(fā)的,可以在代碼中響應(yīng)的一段代碼。比如,當(dāng)我們移動(dòng)鼠標(biāo),打開(kāi)工作薄,激活工作表,選中單元格,改變單元格的數(shù)值,點(diǎn)擊按鈕或窗體,敲擊鍵盤(pán)等等這些都會(huì)產(chǎn)生一系列的事件,通過(guò)編寫(xiě)代碼響應(yīng)這些事件,當(dāng)發(fā)生此類(lèi)事件時(shí),程序代碼就會(huì)進(jìn)行相應(yīng)的操作。 這樣解釋你會(huì)不會(huì)有些暈?感覺(jué)又一次進(jìn)入了外星人的世界?還是舉例說(shuō)明,我們需要當(dāng)激活某工作表的時(shí)候,自動(dòng)彈出一個(gè)對(duì)話(huà)框,告訴我們激活的工作表的名稱(chēng)。 (1)打開(kāi)一個(gè)工作表,Alt+F11打開(kāi)
36、VBE窗口,在“工程對(duì)象管理器”窗口里雙擊你要進(jìn)行設(shè)置的工作表,使其代碼窗口顯示。 (2)左面選擇對(duì)象Worksheet(工作表對(duì)象),右面選擇Activate事件,我們可以看到在代碼窗口里系統(tǒng)已經(jīng)為我們自動(dòng)輸入了一段代碼。 復(fù)制內(nèi)容到剪貼板 代碼:Private Sub Worksheet_Activate()End Sub引用:提醒: 初學(xué)的我們,不必完全記住對(duì)象及事件的名稱(chēng),也不必手工輸入,系統(tǒng)早為你準(zhǔn)備好
37、了,你可以在代碼窗口里進(jìn)行選擇,左邊是對(duì)象,右面是事件,如果你想知道某個(gè)對(duì)象(例如工作薄、工作表、窗體等)有哪些事件,只需要雙擊這個(gè)對(duì)象,然后在代友窗口里查看即可。我們需要做的只是:當(dāng)自己需要它的時(shí)候,知道打開(kāi)哪個(gè)箱子把它拿出來(lái)即可.4.jpg (47.51 KB) 廢話(huà)說(shuō)完,再回到問(wèn)題里:要達(dá)到問(wèn)題的目的,我們只需要在已給我們列出的兩段代碼中間加入需要進(jìn)行操作的代碼就可以了,這里我們需要的是一個(gè)對(duì)話(huà)框來(lái)提醒,對(duì)了,還記得Msgbox吧? 輸入代碼: 復(fù)制內(nèi)容到剪貼板 代碼:MsgBox &qu
38、ot;你現(xiàn)在激活的工作表名稱(chēng)是:" & ActiveSheet.Name 上面的代碼相信你應(yīng)該能看懂吧? &和我們工作表里的函數(shù)是一樣的,連接文本的作用,A是當(dāng)前活動(dòng)工作表的名字(用了一個(gè)name屬性)。 回到工作表,激活你剛才設(shè)置代碼的工作表,如果你剛才設(shè)置的工作表是激活狀態(tài),請(qǐng)選擇其他工作表,然后再重新激活它,看看你看到了什么?5.jpg (34.5 KB)&
39、#160; 看一下上面的代碼,對(duì)象和事件之間用什么來(lái)分隔?還是不是點(diǎn)? 千萬(wàn)別懶,一定要?jiǎng)邮?,換其他的事件或其他的對(duì)象試一試,試著用代碼改一下其他對(duì)象的屬性,在單元格里添加點(diǎn)什么東西,這些隨你了,你可千萬(wàn)別說(shuō)你不知道哪些事件是干嘛用的。 別忘記,抹黑代碼,按F1,再重復(fù)一遍,這是一件好武器,一般人我不告訴他.VBA過(guò)程 一個(gè)過(guò)程就是執(zhí)行某些動(dòng)作的代碼組合。
40、 VBA過(guò)程分Sub過(guò)程和Function過(guò)程。 1、Sub過(guò)程總是以“sub 過(guò)程名()”開(kāi)頭,以“End Sub”結(jié)尾,一個(gè)過(guò)程就是執(zhí)行某項(xiàng)動(dòng)作的一套指令,Sub過(guò)程不返回運(yùn)行的結(jié)果。 2、Function總是以“Function 程序名()”開(kāi)頭,以“End Function”結(jié)尾,和Sub過(guò)程的區(qū)別是Function過(guò)程返回程序運(yùn)行的值,值可以是一個(gè)值或一個(gè)數(shù)組,就像我們的工作表函數(shù),F(xiàn)unction過(guò)程也就是
41、我們說(shuō)的自定義函數(shù)。 在這里,葉楓主要要給大家講的是Sub過(guò)程,F(xiàn)unction過(guò)程如果需要的話(huà),在后面我們?cè)僦v。 好了,今天已經(jīng)講得夠多了,你對(duì)VBA應(yīng)該已有一個(gè)簡(jiǎn)單的認(rèn)識(shí)了吧? 要設(shè)計(jì)一個(gè)過(guò)程,其實(shí)很簡(jiǎn)單,把需要的對(duì)象收集起來(lái),看看我們要對(duì)他們的屬性進(jìn)行怎樣的修改?我們需要做什么?需要用什么樣的方法?要用哪些事件?收集起來(lái)就是一個(gè)完整的過(guò)程。
42、 只要你肯動(dòng)手,一定會(huì)覺(jué)得很簡(jiǎn)單,你不要被那一大堆的對(duì)象、屬性、方法和事件給嚇暈了,完全不必全部記住它們,需要的時(shí)候知道在哪里找就行,而代碼也不必一個(gè)一個(gè)的去輸入,還記得前面一貼我們說(shuō)的錄制宏嗎?當(dāng)你需要進(jìn)行某項(xiàng)操作的時(shí)候,不妨先錄一段宏,但是宏是呆板的,有許多我們不需要的東西,給它修修枝,剪剪葉,整理整理,一個(gè)程序就OK了。 同時(shí),建議你在VBE窗口中,單擊“工具選項(xiàng)”,在彈出的“選項(xiàng)”對(duì)話(huà)框里勾選“自動(dòng)列出成員”。
43、160; 1.jpg (32.45 KB) 設(shè)置好后,試著在代碼窗口里輸入點(diǎn)代碼,看看,有什么?呵呵.,不用我說(shuō)了,對(duì)于初學(xué)的我們,很需要它吧? 2.jpg (15.69 KB) 了解了對(duì)象,屬性,方法及事件后,豬八戒按門(mén)鈴開(kāi)門(mén)的過(guò)程我們都可以把它寫(xiě)成程序: Sub 門(mén)鈴_單擊() 如
44、果 嫦娥.位置在家 那么 門(mén).開(kāi) End sub 上面這個(gè)并不是真的程序,但都有了程序的思想了,程序里,事件、對(duì)象、屬性及過(guò)程都有了,你能找出來(lái)嗎? 多嘗試,溫故知新,你可以想著用程序去解決一些你在使用Excel過(guò)程中遇到的問(wèn)題,每一個(gè)問(wèn)題的解決,你都會(huì)發(fā)現(xiàn)自己得到了很大的進(jìn)步. 好了,還是那句話(huà),路在腳下,繼續(xù)走,精彩會(huì)慢慢為你上演,讓我們一起努力,共同進(jìn)步。在上面
45、,我們簡(jiǎn)單介紹了VBA的開(kāi)發(fā)環(huán)境、幾個(gè)常用的窗口,并對(duì)對(duì)象、對(duì)象的屬性、對(duì)象的方法、對(duì)象的事件等概念作了簡(jiǎn)單的介紹,貼子大家認(rèn)真看了嗎?有沒(méi)有一點(diǎn)點(diǎn)的收獲?學(xué)習(xí)成績(jī)?nèi)绾危?#160; 什么是對(duì)象?什么是集合?什么是屬性?什么是方法?什么是事件?如何正確地表示它們? 這些,你都能回答了嗎? 先沉思三秒鐘,如果你不能回答,那請(qǐng)趕快回過(guò)頭去,再看一遍,我們說(shuō)VBA是采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方式,這些都是很重要的概念,如果不弄清楚,實(shí)際應(yīng)用時(shí),你可能會(huì)感到手忙腳亂。 如果已經(jīng)掌握了,那讓我們一起繼續(xù)本貼的內(nèi)容。&
46、#160; 這次,我們將繼續(xù)單調(diào)的基本功練習(xí),講一些VBA里面的關(guān)鍵字,為程序設(shè)計(jì)打下基礎(chǔ),還是那句話(huà),希望你不要嫌內(nèi)容的單調(diào),一口你永遠(yuǎn)也吞不下一個(gè)大胖子,學(xué)習(xí)是一個(gè)循序漸進(jìn)的過(guò)程。-數(shù)據(jù)類(lèi)型、變量、常量、數(shù)組 VBA的主要目的是什么?不用說(shuō)了你也知道,當(dāng)然是處理數(shù)據(jù)。某些數(shù)據(jù)存在于對(duì)象中,如工作表的單元格區(qū)域里,某些數(shù)據(jù)存在于我們自定義的變量中。- 1、數(shù)據(jù)類(lèi)型 &
47、#160; 數(shù)據(jù)類(lèi)型告訴計(jì)算機(jī)如何將數(shù)據(jù)存儲(chǔ)在內(nèi)存中,如以整數(shù)、字符串、日期等。 數(shù)據(jù)類(lèi)型是變量的特性,數(shù)據(jù)類(lèi)型包括:數(shù)據(jù)類(lèi)型存儲(chǔ)空間大小范圍Byte1 個(gè)字節(jié)0 到 255Boolean2 個(gè)字節(jié)True 或 FalseInteger2 個(gè)字節(jié)-32,768 到 32,767Long(長(zhǎng)整型)4 個(gè)字節(jié)-2,147,483,648 到 2,147,483,647Single (單精度浮點(diǎn)型)4 個(gè)字節(jié)負(fù)數(shù)時(shí)從 -3.402823E38 到 -1.401298E-45;正數(shù)時(shí)從 1.4012
48、98E-45 到 3.402823E38Double (雙精度浮點(diǎn)型)8 個(gè)字節(jié)負(fù)數(shù)時(shí)從 -1.79769313486232E308 到-4.94065645841247E-324;正數(shù)時(shí)從4.94065645841247E-324 到 1.79769313486232E308Currency8 個(gè)字節(jié)從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807(變比整型)Decimal14 個(gè)字節(jié)沒(méi)有小數(shù)點(diǎn)時(shí)為 +/-79,228,162,514,264,337,593,543,950,335,而小數(shù)點(diǎn)右邊有 28 位數(shù)時(shí)為 +/-7.9228
49、162514264337593543950335;最小的非零值為 +/-0.0000000000000000000000000001Date8 個(gè)字節(jié)100 年 1 月 1 日 到 9999 年 12 月 31 日Object4 個(gè)字節(jié)任何 Object 引用String10 字節(jié)加字符串長(zhǎng)度0 到大約 20 億(變長(zhǎng))String(定長(zhǎng))字符串長(zhǎng)度1 到大約 65,400Variant(數(shù)字)16 個(gè)字節(jié)任何數(shù)字值,最大可達(dá) Double 的范圍Variant(字符)22 個(gè)字節(jié)加字符串長(zhǎng)度與變長(zhǎng) String 有相同的范圍用戶(hù)自定義所有元素所需數(shù)目每個(gè)元素的范圍與它本身的數(shù)據(jù)類(lèi)型的范圍相同
50、。(利用 Type)- 2、變量 變量是用于保存在程序運(yùn)行過(guò)程中需要臨時(shí)保存的值或?qū)ο?。就相?dāng)于我們?cè)诓僮鞴ぷ鞅淼臅r(shí)候插入的輔助單元格、輔助列或輔助表一樣。 同工作表的單元格一樣,變量可以接納很多種的數(shù)據(jù)類(lèi)型,如其名,程序運(yùn)行后,變量的值是可以改變的。 如何定義變量?
51、60; 定義變量可以使用Dim語(yǔ)句: Dim 變量名 As 數(shù)據(jù)類(lèi)型 變量名有一定的命名規(guī)則,這里我就不詳細(xì)
52、說(shuō)明了,需要提醒的是在程序的設(shè)計(jì)過(guò)程中,你可能會(huì)定義很多的變量,為了閱讀及修改程序的方便,你定義的變量名盡量能讓人一看就明白這個(gè)變量具體代表的是什么。在Dim語(yǔ)句中,我們可以不必聲明變量的數(shù)據(jù)類(lèi)型,直接輸入“Dim 變量名”此時(shí)定義的變量將被指定為Variant類(lèi)型。 但我們?cè)诔绦蛟O(shè)計(jì)的過(guò)程中,一般應(yīng)該明確數(shù)據(jù)的類(lèi)型,這是一個(gè)好的編程習(xí)慣,因?yàn)橹付〝?shù)據(jù)類(lèi)型后會(huì)提高程序的運(yùn)行速度。 我們可以在模塊中輸入“Option Explict”作為第一
53、句語(yǔ)句來(lái)強(qiáng)制聲明所有變量。也可以點(diǎn)“工具選項(xiàng)”,在選項(xiàng)對(duì)話(huà)框里勾選“要求聲明變量”。這樣,VBA在遇到?jīng)]有聲明的變量名稱(chēng),該語(yǔ)句將導(dǎo)致程序停止。 定義變量除了可以使用Dim語(yǔ)句外,比較常的還有:static語(yǔ)句,Private語(yǔ)句,Public語(yǔ)句。使用不同的語(yǔ)句定義的變量不同的是它們的作用作用域不同,具體為: (1)如果在一個(gè)過(guò)程中包含了一個(gè)Dim或Static語(yǔ)句,此時(shí)聲明的變量作用域?yàn)榇诉^(guò)程,即本地變量。
54、160; (2)如果在一個(gè)模塊的第一個(gè)過(guò)程之前包含了Dim或Prvate語(yǔ)句,此時(shí)聲明的變量作用域?yàn)榇四K里所有的過(guò)程,也就是在此模塊里所有的過(guò)程都可以使用它,即模塊作用域下的變量; (3)如果在一個(gè)模塊的第一個(gè)過(guò)程之前包含了Public語(yǔ)名,此時(shí)聲明的變量作用域?yàn)樗心K,即公有變量。 變量的作用域是指變量保留其值的這段
55、時(shí)間,也稱(chēng)為變量的生成周期,它決定變量可以用于哪個(gè)模塊或過(guò)程中。 給變量賦值 用等號(hào)()是VBA里的賦值運(yùn)算符。 比如我們把"我在學(xué)習(xí)VBA變量!"這個(gè)字符串賦給變量A,則直接輸入:
56、 A="我在學(xué)習(xí)VBA變量!" 對(duì)了,你可以在立即窗口里試一下逐條輸入: &
57、#160; A="我在學(xué)習(xí)VBA變量!" Mgbox A 看一下效果。&
58、#160; 注意,在VBA里文本是要用英語(yǔ)引號(hào)引起來(lái)的,還有日期要用#號(hào),比如將日期2009-3-10賦給變量A,則為: A=#2009-3-10#-
59、60; 3、常量 執(zhí)行過(guò)程時(shí),變量的值會(huì)發(fā)生改變,所以我們稱(chēng)它為“變量”,但有時(shí)候我們需要引用不會(huì)發(fā)生變化的數(shù)據(jù),這就是常量。常量聲明后,不以對(duì)它進(jìn)行再賦值。 聲明常量設(shè)定常量的值,需要用Const語(yǔ)句: Const
60、常量名 As 數(shù)據(jù)類(lèi)型 常量的值-4、數(shù)組 除了變量和常量以外,數(shù)組也是我們常用到的。 什么是數(shù)組? 數(shù)組是具有相同數(shù)據(jù)類(lèi)型并且共享一個(gè)名字的一組變量的集合。數(shù)組也是變量。 數(shù)組中的元素通過(guò)索引數(shù)字加以區(qū)分。 如何聲明數(shù)組?
61、160; 可以用Dim語(yǔ)句或者Public語(yǔ)句聲明數(shù)組。 Dim/Public 數(shù)組名 (a to b) as 數(shù)據(jù)類(lèi)型 a 和b 是數(shù)組中元素的個(gè)數(shù),數(shù)組元素素最小值為a,最大值為b,元素個(gè)數(shù)為(b-a+1)個(gè),當(dāng)然,你也可以直接輸入個(gè)數(shù),此時(shí)默認(rèn)最小索引號(hào)為0。
62、 如: Dim myarr(5) As Integer 這個(gè)數(shù)組的最小元素索引號(hào)為0,元素個(gè)數(shù)為6。 上面定義的只是一維數(shù)組,你還可以定義二維、三維、四維.
63、60; 如: Dim myarr(1 to 5,1 to 10) As Integer 這就是一個(gè)二維數(shù)組,元素個(gè)數(shù)為5*1050個(gè)。 在程序設(shè)計(jì)的過(guò)程中,定義數(shù)組的時(shí)候我們可能不能確定數(shù)組的元素個(gè)數(shù),對(duì)數(shù)組進(jìn)行聲明后,可以在運(yùn)行時(shí)用ReDim語(yǔ)句重新指定數(shù)組的大小。-
64、0;今天的這一部分內(nèi)容實(shí)在很枯燥,連葉楓都有點(diǎn)耐不住了,拉拉雜雜說(shuō)了這么多,也不知道你看出點(diǎn)門(mén)道沒(méi)?同前一貼講的內(nèi)容一樣,這些基礎(chǔ)都是非常重要的,多讀幾遍,扎好馬才能修練更高深的武功,千萬(wàn)別嫌這個(gè)過(guò)程的漫長(zhǎng)。 一個(gè)讓你心儀的女孩子,想牽上她的小手,徜徉在公園里的林蔭小道上,先前的送花、打電話(huà)等等那一串串巴結(jié)的行動(dòng)你會(huì)不會(huì)嫌太漫長(zhǎng)? VBA不像函數(shù)那樣直面我們,它躲在Excel的背后,像一個(gè)“養(yǎng)在深閨未得見(jiàn)”的美麗姑娘,她飄在墻角的那縷模糊卻
65、美麗的身影對(duì)我們充滿(mǎn)了誘惑,現(xiàn)在我們正在想法設(shè)法尋找她的聯(lián)系電話(huà),要想成功俘虜她,這一步能少嗎? 看的沒(méi)有動(dòng)的快,動(dòng)手操作才是學(xué)習(xí)的正確方法。發(fā)現(xiàn)問(wèn)題,解決問(wèn)題,這豈不是一個(gè)快樂(lè)的過(guò)程。有人問(wèn):如何知道該定義變量為何種類(lèi)型?= 這就要根據(jù)你的實(shí)際需要,再結(jié)合各種數(shù)據(jù)的的范圍來(lái)看。 在編寫(xiě)程序的過(guò)程中,選擇需要存儲(chǔ)空間盡量小的數(shù)據(jù)類(lèi)型來(lái)保存所需要的數(shù)據(jù),這是很有必要的,雖然我們可以把變量設(shè)為Variant型,但上面我說(shuō)了,
66、定義變量類(lèi)型會(huì)提升程序的運(yùn)行速度,這也是VBA提供各種數(shù)據(jù)類(lèi)型存儲(chǔ)空間的原因。 該定義變量為哪一種類(lèi)型?看一看它的長(zhǎng)度。 用生活中的一個(gè)實(shí)例來(lái)說(shuō)這個(gè)問(wèn)題: 有一天你上街去買(mǎi)一斤菜油,我們需要選擇一個(gè)容器來(lái)裝我們所要買(mǎi)的菜油(相當(dāng)于聲明變量的類(lèi)型),如果我們沒(méi)有選擇選擇容器,上帝可不知道你要買(mǎi)多少斤菜油,他就扔給你一個(gè)超級(jí)大的水缸,這個(gè)水缸無(wú)論你要買(mǎi)多少菜油都是可以裝得下的??墒菙y帶這樣一個(gè)水缸上街你會(huì)不會(huì)覺(jué)得太不方便了?用一個(gè)水缸來(lái)裝一斤菜油會(huì)不會(huì)太浪費(fèi)了?所以我們得自己選
67、擇一個(gè)瓶子去裝我們的油,一斤油,用一個(gè)瓶子剛好合適,當(dāng)然,如果你只用一個(gè)茶杯去裝,那也是不行的。 用數(shù)據(jù)來(lái)打比方,我們需要用變量來(lái)保存一個(gè)學(xué)生某學(xué)科考試成績(jī)的分?jǐn)?shù),那么用Byte數(shù)據(jù)類(lèi)型就可以了(它的范圍是0255),如果在這里使用Integer、Long、Single這些數(shù)據(jù)類(lèi)型的話(huà),就相當(dāng)于我們用水桶,水缸去裝那一斤菜油,只是對(duì)計(jì)算機(jī)存儲(chǔ)空間的浪費(fèi),當(dāng)然,如果你的值的范圍超過(guò)了Byte的范圍,那定義成Byte也是不行的。 定義變量的類(lèi)型時(shí),除了考慮長(zhǎng)度外,還要考慮變量的值的類(lèi)型。
68、 買(mǎi)油的時(shí)候不管是用瓶子還是用水缸,反正都能裝回來(lái),但是如果你用麻袋能不能裝那一斤油回來(lái)? 還是那句話(huà),如果你沒(méi)有定義變量類(lèi)型或定義變量類(lèi)型為Variant,聰明的計(jì)算機(jī)會(huì)先看你打的油是固體還是液體,是液體的話(huà)把麻袋扔在一邊,給你弄口大缸子。但是如果你自己選擇麻袋上街去買(mǎi)油,你還能不能把你的油帶回來(lái)? 用數(shù)據(jù)來(lái)打比方,如果你定義了一個(gè)變量為Integer型,那你再用把學(xué)生姓名的字符串賦給它,行嗎? 復(fù)制內(nèi)容到剪貼板 代碼:Sub mysub()
69、 Dim a As Integer a = "我在學(xué)習(xí)VBA變量" MsgBox aEnd Sub將這個(gè)過(guò)程提制到模塊里,按F5運(yùn)行它,看看是什么結(jié)果?嘗試修改一下定義的數(shù)據(jù)類(lèi)型,看看修改后的運(yùn)行結(jié)果!VBA函數(shù)= 用Excel的時(shí)間相信你也不短了,什么是函數(shù)就不再細(xì)說(shuō)了。
70、 與其他編程語(yǔ)言一樣,VBA含有各種內(nèi)置的函數(shù)。很多的VBA函數(shù)都與Excel的工作表函數(shù)類(lèi)似,或者一樣。 使用VBA函數(shù)的的方式與使用工作表公式中函數(shù)的方式相同,在VBA代碼中,我們可以使用很多Excel的工作表函數(shù),例如Sum,Abs等。 例如: 復(fù)制內(nèi)容到剪貼板 代碼: Sub myabs()
71、0; a = InputBox("請(qǐng)輸入數(shù)值:", "提示") labs = Abs(a) MsgBox "你輸入的值的絕對(duì)值為:" & labs
72、 End Sub這是一個(gè)求絕對(duì)值的過(guò)程,通過(guò)InputBox提示用戶(hù)輸入一個(gè)數(shù)值給變量a,再用Abs函數(shù)求出變量的絕對(duì)值,最后通過(guò)MsgBox返回結(jié)果。 InputBox同MsgBox函數(shù)一樣,是很常用的函數(shù),關(guān)于它的功能及用法,請(qǐng)用絕招:抹黑,按F1, 但并不是所有的工作表函數(shù)在VBA里都可以直接調(diào)用,但由于WorksheetFunction對(duì)象包含在Application對(duì)象中,如果我們要在VBA語(yǔ)句里使用某個(gè)不能直接調(diào)用的
73、工作表函數(shù),只需要在函數(shù)名稱(chēng)前加上Application.WorksheetFunction語(yǔ)語(yǔ)即可。 如:在VBA里使用counta函數(shù)則代碼為: application.worksheetfunction.counta(range("a1:a10") VBA里面的函數(shù)很多,可以簡(jiǎn)化我們的計(jì)算和操作,功能強(qiáng)大啊。但當(dāng)你面對(duì)那一堆英文字母,是否為該怎么記住它們感到暈菜?有人對(duì)我說(shuō),記住常用的幾個(gè),其他的不用記那么清楚,有個(gè)模糊的印向,用時(shí)再翻Help,知道在哪里找就萬(wàn)事OK了。我覺(jué)得這個(gè)方法很好,現(xiàn)轉(zhuǎn)送給你!控制程序的流程,有判斷、分支和循環(huán)三種語(yǔ)句。接下來(lái)我們將一樣一樣地進(jìn)行講解。程序流程控制>if語(yǔ)句1、ifthen語(yǔ)句這個(gè)句式相當(dāng)于中文里面的“如果.那么”。格式:if 邏輯表達(dá)式 then
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2025年中國(guó)卷閘門(mén)電機(jī)行業(yè)市場(chǎng)調(diào)查研究及投資前景預(yù)測(cè)報(bào)告
- 2021-2026年中國(guó)蒸汽電磁閥市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2022-2027年中國(guó)旅游酒店行業(yè)市場(chǎng)全景評(píng)估及投資方向研究報(bào)告
- 營(yíng)銷(xiāo)網(wǎng)絡(luò)建設(shè)項(xiàng)目可行性研究報(bào)告建議書(shū)
- 油料電導(dǎo)率儀行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2025年中國(guó)煤炭物流行業(yè)市場(chǎng)深度分析及投資策略咨詢(xún)報(bào)告
- 建筑材料添加劑行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2025年木質(zhì)桌椅項(xiàng)目可行性研究報(bào)告
- 2025年薄棱形網(wǎng)布項(xiàng)目投資可行性研究分析報(bào)告
- 中國(guó)可食性包裝膜行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及投資規(guī)劃建議報(bào)告
- 高分子材料完整版課件
- excel表格水池側(cè)壁及底板配筋計(jì)算程序(自動(dòng)版)
- DB1301∕T 369-2021 設(shè)施蔬菜有機(jī)肥替代化肥技術(shù)規(guī)程
- 商業(yè)寫(xiě)字樓運(yùn)營(yíng)費(fèi)用
- 完整版:美制螺紋尺寸對(duì)照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- FEMA:潛在的失效模式及影響分析解析課件
- 三腔二囊管的應(yīng)用和護(hù)理--PPT課件 (3)
- 流體力學(xué)第二版蔡增基課件
- 英語(yǔ)書(shū)寫(xiě)模板
- 湖北省機(jī)關(guān)事業(yè)單位勞動(dòng)合同制工人
- 云南省普通初中學(xué)生成長(zhǎng)記錄.doc
評(píng)論
0/150
提交評(píng)論