excel2007VBA教程_第1頁
excel2007VBA教程_第2頁
excel2007VBA教程_第3頁
excel2007VBA教程_第4頁
excel2007VBA教程_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、前言1 為什么要學(xué)VBA?隨著你的Excel水平不斷的提高,以前你不會函數(shù),現(xiàn)在會函數(shù)了,相信大家嘗試到函數(shù)的甜頭,可以批量操作一些數(shù)據(jù),如,從文本里提取數(shù)字,按條件求和,自動生成工資條,考勤表,查詢表,輸入一個(gè)人的身份證號碼,會自動填好“出生地”,“出生年月日”,“年齡”,“性別”等等,一談起函數(shù)大家都會“不亦樂乎”?!敖蚪驑返馈保昂秃瘮?shù)相見恨晚”,說實(shí)在話,我當(dāng)時(shí)也是一種這樣的心態(tài),我學(xué)會的第一個(gè)函數(shù)if,當(dāng)時(shí)高興地睡不著覺。因?yàn)樗梢耘袛唷安患案?,及格,良好,?yōu)秀”,感覺到這個(gè)函數(shù)太神奇了。對工作太有用了,于是我下定決心一定要把函數(shù)學(xué)好,當(dāng)然中間也產(chǎn)生過“放棄”的念頭。為什么呢?因?yàn)槊?/p>

2、一個(gè)函數(shù)的參數(shù)都是長長的,不認(rèn)識的英文單詞,然后又有一些朋友叫我查看Excel自帶的“幫助”文件。極少一部分看“幫助”文件還是可以看懂的,大多數(shù)根本看“幫助”文件看不懂,發(fā)現(xiàn)自帶的“幫助”是便于有一定基礎(chǔ)的使用者查找和學(xué)習(xí)某個(gè)知識點(diǎn),而對于新手來說,也像“俠客行”里的“石破天”看不懂石壁上的蝌蚪文,不能明白其意思。呵呵,一扯又扯遠(yuǎn)了,還是回到主題上來。當(dāng)我們的函數(shù)學(xué)到了一定的水平時(shí),可是,還是發(fā)現(xiàn)有一些問題不能解決。如果要解決用的函數(shù)特別復(fù)雜且很公式很長,有的根本用函數(shù)不能解決了。如一個(gè)單元格又有文字,又有數(shù)字,且數(shù)字出現(xiàn)的位置沒有規(guī)律,且不只一次出現(xiàn)。要求把數(shù)字提取出來。又如提取工作薄里的各

3、工作表名來制作目錄。當(dāng)然我們可以用函數(shù)實(shí)現(xiàn),但是特別麻煩。又如,把多作工作簿匯總到一個(gè)工作簿里一個(gè)工作表時(shí),方便我們匯總,現(xiàn)有的Excel功能無法批量操作,只能一個(gè)一個(gè)的,通過復(fù)制粘貼來完成。如果我們會VBA ,你又到了Ecel里的另一個(gè)天地了。開個(gè)玩笑,Excel VBA,就像“九陰真經(jīng)”里的第九層,也就是說,你會了Excel的VBA,那么你就可以隨心所欲駕馭Excel表格,別人要三天才能完成的報(bào)表,你只要半天,甚至更短的時(shí)間,這樣大大可以提高你的工作效率,上班時(shí),別人上班時(shí)忙來忙去,你倒是很輕松。2 VBA的作用(提高工作效率)2.1 完成Excel現(xiàn)有功能不能實(shí)現(xiàn)的功能2.2 使重復(fù)的工

4、作不再重復(fù)2.3 自定義函數(shù)(方便不會用函數(shù)的朋友)2.4 實(shí)現(xiàn)“人機(jī)對話”(通過彈出一些窗體和對話框)2.5 自定義Excel選項(xiàng)卡(制作出適合自己的工作界面選項(xiàng)卡和功能)2.6 開發(fā)一些小程序(如“進(jìn)銷存”和一些小工具)3 學(xué)VBA的基礎(chǔ)3.1 要有一點(diǎn)函數(shù)基礎(chǔ),和會Excel基礎(chǔ)操作。建議學(xué)完辦公高級班的學(xué)生和在職辦公人員學(xué)習(xí)VBA3.2 學(xué)VBA需要很好的英文基礎(chǔ)嗎?答案是否定,學(xué)習(xí)Excel里的VBA和英文基礎(chǔ)沒有什么必然聯(lián)系,因?yàn)镋xcel里的VBA那些關(guān)鍵字什么的都是最基礎(chǔ)的英語單詞,只要你上過初中,大部分還都能認(rèn)識,再者他們還都是固定的,你就是不認(rèn)識,硬記下來也足夠了,Exce

5、l里的VBA又不是讓你用英語寫文章,也不是讓你通讀英語文章!目錄第一講VBA介紹和VBE編輯環(huán)境為什么要學(xué)VBA?1 提高工作效率,在我們Excel辦公中,許多工作是重復(fù)的,我們可以通過錄制宏把那些動作錄制下來。下一次做時(shí)就不要重復(fù)做了,只要點(diǎn)一下一個(gè)按鈕,就幫我們完成了。2 現(xiàn)有功能很難實(shí)現(xiàn)或者實(shí)現(xiàn)要分許多步驟且比較復(fù)雜,方便一些新手操作和普通用戶操作。3 實(shí)現(xiàn)一些適合自己工作的一些特殊功能,因?yàn)槊恳粋€(gè)人,每一個(gè)行業(yè)存在的不同需求,而微軟公司不能面面俱到,有時(shí)要通過我們自己用VBA來實(shí)現(xiàn)。4 可以定制個(gè)性化的選項(xiàng)卡和命令,實(shí)現(xiàn)方便自己工作的操作的窗口界面5 開發(fā)一些小程序VBA介紹6 VBA

6、是VB的一個(gè)分支,是一門簡單易用的編程語言,說的通俗一點(diǎn)就是由一些代碼和語句按照一定的邏輯組成,能實(shí)現(xiàn)一些功能和作用的代碼VBE窗口介紹7 VBA窗口7.1.1 用快捷鍵(Alt+F11),打開就可以看到(圖 1)的界面,這個(gè)就是VBE窗口界面,和2003版本的沒有變化,還是一樣的。圖 17.2 圖1的上面是菜單欄和工具欄,和平常的2003版本的Excel菜單欄和有工具欄一樣, 7.3 圖1的左邊是“工程資源管理器”和屬性窗口7.4 圖1的右下邊是“立即窗口”7.5 立即窗口的作用,便于快速驗(yàn)證VBA語句,在立即窗口中輸入msgbox "我在學(xué)習(xí)VBA" 然后按一下回車鍵,

7、就會彈出一個(gè)提示框。7.5.1 用雙擊“工程資源管理器”里的Sheet1(Sheet1),就可以看到如(圖 2)所示的就可以看到對象列標(biāo)表和過程列標(biāo)框,白色的區(qū)域那一塊就是我們要寫代碼的區(qū)域。圖 28 添加模塊,窗體,類模塊(打開VBE窗口是沒有這個(gè)三個(gè)模塊的,只有對象模塊)8.1 插入菜單,模塊(有的也叫做標(biāo)準(zhǔn)模塊)8.2 插入菜單,類模塊8.3 插入菜單,窗體9 刪除模塊,窗體,類模塊9.1 如果想不要模塊,窗體,類模塊,把光標(biāo)對準(zhǔn)相應(yīng)的模塊右擊,移除模塊。10 對象瀏覽器窗口,視圖菜單,對象瀏覽器(也可以按快捷F2)可以幫我們找到對象的屬性,方法,事件的一些用法。11 設(shè)置VBE的編輯環(huán)

8、境,為了便于自己編寫和查看,調(diào)試代碼,要對VBE編輯窗口一些設(shè)置進(jìn)鉤選,選擇適合自己的的選項(xiàng)。如(圖 3)圖 311.1 字號大?。汗ぞ卟藛?gt;>選項(xiàng)>>編輯器格式>>大?。⊿)>>如(圖 4),一般我們設(shè)置為11磅圖 411.2 自動彈出成員列表:自動彈出成員列這個(gè)功能對于初學(xué)者和老用戶來說都是非常有用,因?yàn)槲覀儎倢W(xué)的時(shí)候,特別是英文基礎(chǔ)差一點(diǎn)的學(xué)生來說,可以給大家很大的幫助。舉個(gè)例子,工具菜單,選項(xiàng),編輯器,鉤起“自動列出成員(L)”,然后在任何代碼窗口中輸入“Sheets加上一個(gè)點(diǎn)號”,就會彈出如(圖 5)所以的成員列表,綠色圖標(biāo)的是方法,有

9、一個(gè)手形的圖標(biāo)是屬性圖 511.3 要求聲明變量:舉個(gè)例子,工具菜單>>選項(xiàng)>>編輯器>>鉤起“要求變量聲明(R)”,然后新建一個(gè)標(biāo)準(zhǔn)模塊,就會在新建標(biāo)準(zhǔn)模塊的最頂端會自動添加Option Explicit然后在標(biāo)準(zhǔn)模塊里輸入,按F5執(zhí)行代碼,就會彈出(圖 6)這樣的提醒,如果我們把Option Explicit這一句刪除,再按F5執(zhí)行代碼就不會彈出(圖 6)這樣的提醒Sub test() Set MyRg = Range("A1") MsgBox MyRgEnd Sub圖 611.4 自動顯示數(shù)據(jù)提示:舉個(gè)例子,工具菜單,選項(xiàng),編輯器,

10、鉤起“自動顯示數(shù)據(jù)提示(S)”,然后新建一個(gè)標(biāo)準(zhǔn)模塊,輸入以下代碼Sub test() Set MyRg = Range("A1") MsgBox MyRg Set MyRg = NothingEnd Sub主要是便于代碼逐步或者設(shè)置斷點(diǎn)調(diào)試,想知道變量的值時(shí),這時(shí)把光標(biāo)移到變量上,就會彈出一個(gè)提示如(圖 7)所示圖 712 運(yùn)行過程,中斷,重新設(shè)置,在工具欄上用方框框起來的三個(gè)按鈕分別表為“運(yùn)行子過程/用戶窗體”;“中斷”;“重新設(shè)置”。如(圖 8)圖 812.1 運(yùn)行過程分為全過程運(yùn)行(快捷鍵F5)和逐步運(yùn)行(快捷F8)12.2 重新設(shè)置,當(dāng)逐步運(yùn)行時(shí),想取消逐步運(yùn)行,

11、按一下“重新設(shè)置”這個(gè)按鈕。13 中斷:相當(dāng)于按了一下Esc,當(dāng)一個(gè)過程運(yùn)行進(jìn)入了死循環(huán),這時(shí)可以按一下Esc第二講 錄制宏 指定宏 運(yùn)行宏 修改宏 保存宏 加載宏一、 錄制宏1、 顯示“開發(fā)工具”選項(xiàng)卡方法:Office按鈕>>Excel選項(xiàng)>>常用>>在功能區(qū)顯示“開發(fā)工具”選項(xiàng)卡2、 錄制在A1單元格輸入“培訓(xùn)”這樣一個(gè)宏3、 錄制方法“開發(fā)工具”選項(xiàng)卡>>代碼組>>錄制宏>>彈出一個(gè)“錄制新宏”對話框>>輸入宏名為“輸入”>> 確定>> 選中A1單元格>> 輸入“培訓(xùn)

12、”>單擊一下編輯欄的鉤>>停止錄制二、 查看宏1、 方法一 在上一節(jié)課我們已知知道了,相信大家沒有忘記那個(gè)快捷鍵,如果忘記了,我就暈了。Alt+F11,雙擊模塊1>>便可以看到剛才錄制的代碼2、 方法二 “開發(fā)工具”選項(xiàng)卡>>代碼組>>單擊一下Visual Basic按鈕>>雙擊模塊1>>看到以下代碼Sub 輸入()'' 輸入 Macro'' Range("A1").Select ActiveCell.FormulaR1C1 = "培訓(xùn)"End

13、Sub三、 指定宏1、 方法一 “開發(fā)工具”選項(xiàng)卡>>控件組>>插入>>表單控件>>單擊一下“按鈕”>>按住左鍵不放,在工作表里拖拉一下>>畫完后,彈出一個(gè)對話框,指定宏>>選中“輸入”>>確定2、 其它方法 也可以把宏指定給其它對象,如“自選圖形”里的圓,藝術(shù)字A、 打開比方,指定給藝術(shù)字的方法 把光標(biāo)定位到你要指定的藝術(shù)字>>右擊>>指定宏>>彈出“指定宏”對話框>>選中“輸入”>>確定3、 修改“按鈕”的名字 方法 把光標(biāo)定位到按鈕上

14、>>右擊>>編輯文字>>修改為“輸入”四、 運(yùn)行宏1、 方法一 我們先刪除A1單元格里的內(nèi)容>>單擊一下“輸入”按鈕2、 方法二 “開發(fā)工具”選項(xiàng)卡>>代碼組>>單擊一下“宏”按鈕>>選中“輸入”>>單擊一下“執(zhí)行”3、 其它方法 我們在上一節(jié)課講過,在VBE編輯器里,把光標(biāo)定位到你“輸入”的宏過程任何一行代碼里,運(yùn)行F5,逐步運(yùn)行F8五、 修改宏1、 選中A1:D9單元格區(qū)域,錄制一個(gè)給它添加邊框的宏,錄制的代碼如下Sub 添加邊框()'' 添加邊框 Macro''

15、 Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Col

16、orIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade

17、 = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin En

18、d WithEnd Sub2、 修改后的代碼Sub 添加邊框() .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End WithEnd Sub從上面的代碼可以看出,錄制宏會錄制出許多多余的代碼出來。因此要把它們?nèi)サ簦G色是注釋也把刪除,它是對上邊框,下邊框,左邊框,右邊框 ,中間橫線,中間的豎線一個(gè)一個(gè)處理,因此用對所有的邊框六、 保存宏1、 保存帶有宏的工作簿(xlsm)如圖10A、 當(dāng)我們保存帶有宏的工作簿時(shí),會彈出一個(gè)這樣的提示對話框如圖9往往沒有接觸過宏的朋友

19、會嚇一跳的,其實(shí)我們把下面這個(gè)圖里的字讀一次,就明白了,原來要保存為“啟用宏工作簿”這個(gè)是2003版有區(qū)別的,微軟公司的目的就是讓用戶在未打開之前提醒用戶這個(gè)是帶有宏的工作簿圖 9圖 10七、 保存為加載宏(xlam)如圖111、 選擇“Excel加載宏(*xlam)就會自動打開這個(gè)文件夾C:Documents and SettingsAdministratorApplication DataMicrosoftAddIns,然后輸入你的加載宏名圖 112、 加載宏的特點(diǎn)A、 隱藏的B、 一打Excel程序就會打開3、 加載“加載宏”A、 Office按鈕>>Excel選項(xiàng)>&

20、gt;加載項(xiàng)>>轉(zhuǎn)到>>加載項(xiàng)對話框>>鉤起“加載項(xiàng)名”前面的鉤>>確定4、 刪除加載宏A、 2007刪除加載宏比較麻煩,2010版的就改良這個(gè),2010版直接在開始工具選項(xiàng)卡,有一個(gè)“加載項(xiàng)按鈕”,那么2007怎么刪除它呢?Office按鈕>>Excel選項(xiàng)>>加載項(xiàng)>>轉(zhuǎn)到>>加載項(xiàng)對話框>>去掉“加載項(xiàng)名”前面的鉤>>確定八、 保存為個(gè)人宏工作簿:在我們錄制宏時(shí),有時(shí)我們可以選中“保存為個(gè)人宏工作簿”,便可以在所有的工作簿中用,不過有個(gè)缺點(diǎn),會打開個(gè)人宏工作簿,所以建議

21、大家用“加載宏”,保存“個(gè)人宏工作簿”是對VBA新手打造的。第三講 VBA 語法基礎(chǔ)在學(xué)習(xí)VBA之前,我們要了解VBA里的對象,屬性,方法,事件,就像我們在生活中一樣,和一個(gè)人談戀愛,是不是要相互了解對方,才能步入結(jié)婚的禮堂。下面來一一介紹它們一、 對象1) 什么是對象呢?生活中的手機(jī),電視機(jī),桌子等等這些就是對象,而在我們的Excel里VBA 的對象是指什么呢?這個(gè)可能抽象一點(diǎn)。工作簿,工作表,藝術(shù)字,圖片這些就是Excel里的對象2) 實(shí)例A. Workbooks 代表工作簿集合,所有的工作簿,Workbooks(i),表示已打開的第i個(gè)工作簿B. Workbooks ("匯總表

22、") 代表“匯總”工作簿C. ActiveWorkbook 當(dāng)前正在操作的工作簿D. ThisWorkBook代碼所在的工作簿E. Sheets("匯總") 代表“匯總”工作表F. Sheet1表示第一個(gè)插入的工作表,Sheet2表示第二個(gè)插入的工作表.G. Sheets(i) 表示按排列順序,第i個(gè)工作表H. ActiveSheet 表示當(dāng)前活動工作表I. Worksheet 也表示工作表,但不包括圖表工作表、宏工作表等。J. Cells 所有單元格K. Range ("單元格地址")L. Cells(行數(shù),列數(shù))M. Activecell

23、當(dāng)前選中的單元格N. Selection 被選中的單元格或者單元格區(qū)域二、 屬性1) 屬性是指對象的特點(diǎn),對象固有的,如圖片就有圖片高度,圖片的寬度,單元格就有單元格的底紋,單元格字體的顏色,這些就是它們的的屬性,打個(gè)比方,生活的一些東西,如“蘋果”,蘋果的形狀,蘋果的顏色,蘋果的重量,這些就是蘋果的屬性。2) 實(shí)例A. 顯示單元格A1相對引用的地址,而這個(gè)Address就是單元格Range的屬性Sub test() MsgBox Range("A1").Address(0, 0)End SubB. 代碼解釋 屬性中間一定要用點(diǎn)號分開,可能有的學(xué)生會問,怎么才有能知道它有那

24、些屬性呢?打個(gè)比方,我現(xiàn)在想知道工作表有那些屬性,我們可以先輸入Sheet1再加一下點(diǎn)號,就會自動彈出其相應(yīng)的屬性列表出來,就像我們的Excel2007版的函數(shù)一樣,你輸入一個(gè)字母,就會彈出以這個(gè)字母開頭所有函數(shù)出來,這樣大家也就不用去記這些屬性具體這個(gè)英文單詞怎么寫,只要大概了解知道有個(gè)這樣的屬性就可以了三、 方法1) 方法是作用對象的一些動作,工作表刪除,工作表移動,單元格復(fù)制,這些刪除,移動,復(fù)制就是相應(yīng)對象的方法。打個(gè)比方,蘋果被削了,削就是蘋果的方法。2) 實(shí)例A. 在第一個(gè)工作表前面插入一個(gè)工作表Sub test() Sheets.Add before:=Sheets(1)End

25、SubB. 代碼解釋 Sheets是指工作表類,也就是工作表對象,中間用一個(gè)點(diǎn)分開,Add就是方法了,然后再輸入一個(gè)空格,before是對Add方法的一個(gè)補(bǔ)充說明,格式一定要這樣,輸入了Before之后,再輸入一個(gè)冒號,接著輸入一個(gè)等號,整個(gè)代碼的意思,在第一個(gè)工作表前插入一個(gè)新的工作表。四、 事件1) 事件在Excel VBA里是指一定條件下,觸發(fā)過程,如雙擊左鍵,右擊,改變單元格內(nèi)容,選擇不同的單元格就會觸發(fā)一個(gè)過程就叫做事件,事件一般都是寫在相應(yīng)的工作表模塊里2) 實(shí)例A. 雙擊就會彈出一個(gè)問候?qū)υ捒騊rivate Sub Worksheet_BeforeDoubleClick(ByVa

26、l Target As Range, Cancel As Boolean) MsgBox "你好"End SubB. 代碼解釋:雙擊左鍵就會彈出一個(gè)問候?qū)υ捒?,Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean這個(gè)是自動生成的,你到工作表模塊里,如雙擊Sheet1模塊,通用列框里選擇Worksheet,聲明列表里選擇BeforeDoubleClik,Msgbox是顯示對話框函數(shù)。五、 變量1) 什么是變量 變量是指在代碼運(yùn)行過程中其值能夠發(fā)生變化的量,舉個(gè)例子,Y2

27、*X,這是一個(gè)方程 ,當(dāng)X1時(shí),Y2,當(dāng)X2時(shí),Y4,當(dāng)X3時(shí),Y6, 這個(gè)X就是一個(gè)變量2) 變量中不能使用的一些符號 # * % !,用的最多的是 _3) 變量不區(qū)分大小寫,也可以使用中文,但實(shí)際應(yīng)用中很少用,我們用英文表示變量名一般也會采取一些特點(diǎn),如文本型的變量用Str ,這樣讓人一看就這個(gè)變量表示文本型數(shù)據(jù)類型String4) 為什么要聲明變量A. 如果數(shù)據(jù)量不大,在Excel里VBA不聲明變量也沒有影響的,但是,如果數(shù)據(jù)量很大時(shí),不聲明,程序的運(yùn)行速度就會慢許多。B. 打個(gè)比方,你打了一個(gè)電話給公交車公司你要租一輛車,但是你沒有說你要租一輛多少人坐的車,那么出租車公司就會給你一坐1

28、00個(gè)人的車,而實(shí)際人你才要一個(gè)30人坐的車。大車的費(fèi)用肯定比小車的費(fèi)用貴,這樣你不劃算啊,變量也是這樣,你不聲明,它就給存儲空間最大的個(gè)數(shù)據(jù)類型給你那不聲明的變量。C. 再打個(gè)比方:小明的媽叫小明去菜市場去一斤打醬油,小明從家里拿了一個(gè)麻袋去,小明媽媽拉住小明了,說麻袋不能裝醬油,會漏掉,于是小明提了了一個(gè)大水缺,在路上,小明摔了一跤,醬油也沒有了,水缺也破了,小明真是陪了夫人又折兵,后來他媽媽告訴小明,下次你去打醬油就拿一個(gè)裝一斤礦泉水瓶子去就可以了。呵呵,相信聽了這個(gè)故事肯定笑了。也明白了為什么要聲明定義變量。5) 變量聲明方式A. 格式一 Dim 變量名 as 數(shù)據(jù)類型Dim i as

29、 IntegerB. 格式二 dim 變量名 as 數(shù)據(jù)類型,變量名 as 數(shù)據(jù)類型 記得用用逗號分開Dim I as Integer,Rg as Range,Str as String6) 強(qiáng)制聲明A. 變明使用前聲明是一個(gè)好習(xí)慣,但我們會忘記,怎么辦呢B. 方法一 Alt+F11>>工具菜單>>選項(xiàng)>>編輯器選項(xiàng)卡中>>鉤起“要求變量聲明”復(fù)選框 如圖 12圖 12C. 方法二 在代碼模塊頂端輸入 Option Explicit7) 聲明變量的一種簡寫形式A. 我們經(jīng)常會看這樣的一種定義變量的格式 Dim I% ,大家會問,這個(gè)是什么意思呢?

30、,把變量I數(shù)據(jù)類型定義為整型。常見的有整型Integer用% 長整型Long用& 字符串String用$ 單精度浮點(diǎn)型Single用! 雙精度浮點(diǎn)型Double用#8) 變量的作用域變量的生命周期,也就是變量什么時(shí)候銷毀,釋放內(nèi)存,因?yàn)樽兞恐皇菚簳r(shí)的存在內(nèi)存中的,根據(jù)這樣把變量分為 過程級變量,模塊級變量,全局性變量,靜態(tài)變量A. 過程變量:定義變量是寫在過程中的,其作用是在過程運(yùn)行中,當(dāng)過程結(jié)束變量也就銷毀了。1. 實(shí)例Sub test() Dim i As String i = "佛山小老鼠" MsgBox iEnd SubB. 模塊級變量:定義變量寫在模塊的頂

31、端,在此模塊中可以調(diào)用此變量,其值還是存在,別的模塊就不行了1. 實(shí)例 Dim Str As StringSub test1() Str = "小老鼠" MsgBox StrStr = "佛山" & StrEnd SubSub test2() MsgBox StrStr = ""End Sub代碼解釋 先運(yùn)行Test1,然后運(yùn)行Test2,大家可以看到對話框顯示“佛山小老鼠”,也就是說運(yùn)行過程Test2時(shí),把過程Test1里的小老鼠也繼承下來了。C. 全局性變量 也是定義變量寫在模塊的頂端,不過就不是用Dim來定義了,要用Pu

32、blic,這個(gè)變量就在所有的模塊都可以調(diào)用,也就是這個(gè)變量值一直存在,直到把Excel程序關(guān)閉,變量值才會銷毀。1. 實(shí)例 先插入兩個(gè)模塊,在模塊1中輸入以下代碼Public Str As StringSub test1() Str = "佛山小老鼠" MsgBox StrEnd Sub在模塊2中輸入以下代碼Sub test2() MsgBox StrEnd Sub然后先運(yùn)行模塊1中的代碼,然后再運(yùn)行模塊2中的代碼,大家就會發(fā)現(xiàn)對話框中顯示了“佛山小老鼠”,相信大家都明白了這個(gè)道量,另外全局性變量不能重復(fù)定義,重復(fù)定義就會報(bào)錯。9) 靜態(tài)變量靜態(tài)變量 定義靜態(tài)變量是在寫在過

33、程中,用Static定義,結(jié)束后,變量值仍舊保留,但是大家要用和模級變量區(qū)分,模塊級變量是值作用于此模塊所有過程,而靜態(tài)變量只值只作用于本過程,不作有于其它過程。A. 實(shí)例Sub Test1()Static i As IntegerMsgBox ii = i + 1End SubSub Test2() MsgBox iEnd Sub代碼解釋:先運(yùn)行Test1過程,顯示i為0,再運(yùn)行Test1過程為1,再運(yùn)行Test1過程為2,再運(yùn)行Test1過程為3,我們發(fā)現(xiàn)每運(yùn)行一次結(jié)果會加1,因?yàn)槲覀冇幸粋€(gè)累加變量 i=i+1,其值還是保留,但當(dāng)我們再行Test2時(shí),可是那個(gè)i還是0,說明靜態(tài)變量只作用于

34、Test1,而不作用于Test2六、 常量1) 常用申明用關(guān)鍵字Const,其值在過程運(yùn)行中不會發(fā)現(xiàn)變化2) 常量作用域A. 和變量一樣B. 實(shí)例 計(jì)算圓面積Sub test1() '過程開始 Dim S As Single '定義變量S為單精變浮點(diǎn)型,目的讓其有保留二位小數(shù),如果你定義Integer就沒有小數(shù)點(diǎn)位數(shù)了 Const Pai = 3.14 '定義常量Pai r = 2 '給r賦值為2 S = Pai * r 2 '計(jì)算圓的面積公式 MsgBox "算出的圓的面積為:" & S '顯示圓面積結(jié)果End Su

35、bC. 代碼截圖如圖 13圖 13第四講 單元格對象單元格和單元格區(qū)域是用戶操作最多的一個(gè)對象,它可以表示一行,一列,一個(gè)區(qū)域,整個(gè)工作表,關(guān)鍵大家要理解它的引用方式一、 單元格的引用方式1) Range表示A. 如表示A1單元格 Range ("A1")B. 實(shí)例Sub Range表示() Range("A1") = "佛山小老鼠"End Sub2) Cells表示A. 如表示D3單元格 Cells(3,4)B. 實(shí)例Sub Cells表示() Cells(3, 4) = "佛山小老鼠"End Sub3) Act

36、ivecell表示A. 實(shí)例Sub ActiveCell表示() ActiveCell = "佛山小老鼠"End Sub二、 單元格區(qū)域的引用方式A. 實(shí)例“表示單元格區(qū)域A1到D9的區(qū)域,有下面幾種表法方法Sub test1() Range("A1:D9") = 1End SubSub test2() Range("A1", "D9") = 3End SubSub test3() Range(Cells(1, 1), Cells(9, 4) = 5End SubSub test4() Range(A1, D9)

37、= 6End SubB. 其它方式引用單元格區(qū)域1. Selection2. UsedRange3. CurrentRegion4. Union5. Intersect6. Resize它們的代碼用法如下Sub test1() Range("A1:D9") = 1End SubSub test2() Range("A1", "D9") = 3End SubSub test3() Range(Cells(1, 1), Cells(9, 4) = 5End SubSub test4() Range(A1, D9) = 6End SubSu

38、b test5() Selection = 7End SubSub test6() ActiveSheet.UsedRange = 8 '注意一定要在UsedRange前加父對象End SubSub test7() Range("A1").CurrentRegion.Select '表示選中和A1單元格相連接的所有單元格,這個(gè)連接是指有數(shù)據(jù)的連接End SubSub test8() Application.Union(A1, C1, E1, G1).Select '表示同時(shí)選中A1,C1,E1,G1單元格End SubSub test9()'

39、 Intersect方法經(jīng)常用到了,有時(shí)可能用戶選擇了整列,而這一列有數(shù)據(jù)的單元格不多,代碼里用'了循環(huán)語句,如果不用Intersect這個(gè)來選擇區(qū)域,運(yùn)行程序時(shí)可能就出現(xiàn)Excel程序卡死Application.Intersect(ActiveSheet.UsedRange, Selection).SelectEnd SubSub test10()'Resize屬性常用在數(shù)組轉(zhuǎn)置,有時(shí)不確定區(qū)域有多大,就會用Resize來填充數(shù)據(jù)'格式:單元格對象.Resize(行數(shù),列數(shù))Range("D1").Resize(9, 2).Select '

40、表示從D1單元格開始,向下總共有9行,當(dāng)然包括D1在內(nèi),'向右總共二列,當(dāng)然也包括D列在內(nèi),最后得列一個(gè)D1到E9的一個(gè)區(qū)域End Sub三、 行和列的引用方式 1) 用Range來表示行和列Sub test1() Range("1:1").Select '表示第一行被選中End SubSub test2() Range("5:9").Select '表示第5行到第9行被選中End SubSub test3() Range("A:D").Select '表示A列到D列被選中End SubSub test

41、7() Range("D9").EntireRow.Select '表示D9單元格所在的行,也就是第9行End SubSub test8() Range("D9").EntireColumn.Select '表示D9單元格所在的列,也就是第4列End Sub2) 用Rows和Columns表示行和列Sub test4() Rows("1").Select '可以不加雙引號,也可以加雙引號End SubSub test5()Rows("1:4").Select '表示1行到4行被選中,

42、記得要加雙引號End SubSub test6() Dim i As Integer i = 9 Rows("1:" & i).Select '表示1行到9行被選中End SubSub test9() Rows.Select '表示工作表中所有的行被選中,也就是全選工作表End SubSub test10() Columns.Select '表示工作表中所有的列被選中,也就是全選工作表End Sub四、 用Offset屬性來引用單元格1) 單元格對象.Offset(偏移行數(shù),偏移列數(shù)),備注:往左往上就是負(fù)數(shù),往右往下就是正數(shù)2) 實(shí)例Sub

43、 test() Range("A1").Offset(0, 1).Select '單元格B1被選中End Sub五、 定位單元格1) 定位到A列最后一個(gè)有數(shù)據(jù)的單元格Sub MyRow() i = Cells(Rows.Count, 1).End(xlUp).Row MsgBox iEnd Sub2) 定位到第一行最后一個(gè)有數(shù)據(jù)的單元格Sub MyCol() i = Cells(1, Columns.Count).End(xlToLeft).Column MsgBox iEnd Sub第五講VBA語句前面一講我們學(xué)習(xí)了單元格的引用,這一講我們來學(xué)習(xí)VBA里的語句,V

44、BA里的語句有好多,下面把一些常用的講一下一、 輸入語句1) 用Inputbox函數(shù)實(shí)現(xiàn)A. Inputbox函數(shù)有七個(gè)參數(shù),主要我們理解前面三個(gè)參數(shù),第一個(gè)參數(shù)是“提示語”第二參數(shù)是標(biāo)題,第三參數(shù)是輸入框中的默認(rèn)值B. 實(shí)例Sub test1() '這個(gè)程序有時(shí)會報(bào)錯 Dim i As Single, S As Single r = InputBox("請輸入圓的半徑", "圓半徑", "空") S = 3.14 * r 2 MsgBox "圓的面積是:" & SEnd SubSub test2(

45、) '這個(gè)程序是完善的,不會報(bào)錯 Dim i As Single, S As Single r = InputBox("請輸入圓的半徑", "圓半徑", 0) If r = "" Or StrPtr(r) = 0 Then Exit Sub S = 3.14 * r 2 MsgBox "圓的面積是:" & SEnd Sub2) 用InputBox方法實(shí)現(xiàn)A. InputBox方法有8個(gè)參數(shù),主要我們理解前三個(gè)參數(shù)和最后一個(gè)參數(shù),第一個(gè)參數(shù)是“提示語,第二參數(shù)是標(biāo)題,第三參數(shù)是輸入框中的默認(rèn)值,第八參

46、數(shù)是指返回的數(shù)據(jù)類型B. 實(shí)例'用InputBox方法實(shí)現(xiàn)Sub test3() '這個(gè)程序是完善的,不會報(bào)錯 Dim i As Single, S As Single '定義變量i,S為單精度型數(shù)據(jù)類型 r = InputBox("請輸入圓的半徑", "圓半徑") '彈出輸入對話框 If TypeName(r) = "Boolean" Or r = "" Then Exit Sub '如果對話框點(diǎn)了取消或者點(diǎn)了關(guān)閉以及沒有填數(shù)據(jù)就退出程序, S = 3.14 * r 2 '面積公式 MsgBox "圓的面積是:" & SEnd SubSub test4() '這個(gè)程序有時(shí)會報(bào)錯 Set rg = Application.InputBox("請選擇你要查找的區(qū)域", "查找區(qū)域", Type:=8) rg.Value = "老鼠"End SubSub test5() '這個(gè)程序是完善的,不會報(bào)錯,如果第八參數(shù)為8,那么用 On Error GoTo 100來防錯了 Dim rg As Ra

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論