Excel的使用第10章_第1頁(yè)
Excel的使用第10章_第2頁(yè)
Excel的使用第10章_第3頁(yè)
Excel的使用第10章_第4頁(yè)
Excel的使用第10章_第5頁(yè)
已閱讀5頁(yè),還剩94頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、n宏是用戶用宏是用戶用vba程序設(shè)計(jì)語(yǔ)言編寫(xiě)或錄制的程序,其中保程序設(shè)計(jì)語(yǔ)言編寫(xiě)或錄制的程序,其中保存有一系列存有一系列excel 的命令,可以被多次重復(fù)使用。宏可以的命令,可以被多次重復(fù)使用。宏可以自動(dòng)執(zhí)行復(fù)雜的任務(wù),減少完成任務(wù)所需的步驟。自動(dòng)執(zhí)行復(fù)雜的任務(wù),減少完成任務(wù)所需的步驟。nvba即即visual basic for applications,它是,它是visual basic的一個(gè)派生體,它有針對(duì)性地對(duì)的一個(gè)派生體,它有針對(duì)性地對(duì)visual basic進(jìn)行進(jìn)行了優(yōu)化和設(shè)置。兩者的主要區(qū)別在于:了優(yōu)化和設(shè)置。兩者的主要區(qū)別在于:visual basic開(kāi)發(fā)開(kāi)發(fā)的應(yīng)用程序可以獨(dú)立

2、在的應(yīng)用程序可以獨(dú)立在windows系統(tǒng)中運(yùn)行,而用系統(tǒng)中運(yùn)行,而用vba開(kāi)發(fā)的程序只能在提供它的應(yīng)用程序中運(yùn)行。開(kāi)發(fā)的程序只能在提供它的應(yīng)用程序中運(yùn)行。n在在excel中,可以用中,可以用excel提供的宏錄制工具錄制宏程序,提供的宏錄制工具錄制宏程序,也可以使用它提供的也可以使用它提供的“visual basic 編輯器編輯器”直接編寫(xiě)直接編寫(xiě)宏。宏。n宏錄制器是excel提供的一種軟件工具,它能夠?qū)⒂脩舻牟僮鬟^(guò)程記錄下來(lái),并自動(dòng)將所記錄的操作轉(zhuǎn)換成為vba程序代碼。n對(duì)于經(jīng)常重復(fù)進(jìn)行的操作過(guò)程,可以通過(guò)宏錄制器將它記錄下來(lái),當(dāng)需要再次進(jìn)行這些操作時(shí),只需要運(yùn)行錄制的宏,excel就能自動(dòng)

3、完成這些重復(fù)的操作。n說(shuō)明:當(dāng)錄制宏的工作開(kāi)始后,所有的操作步驟都將被記錄在宏中,所以應(yīng)盡量減少不必要的或錯(cuò)誤的操作,如果在錄制宏時(shí)出現(xiàn)失誤,更正失誤的操作也會(huì)記錄在宏中。 n建立10班的學(xué)生檔案表,檔案表的結(jié)構(gòu)如下圖所示。錄制一個(gè)能夠建立這種檔案表結(jié)構(gòu)的宏。1.選擇“工具”|“宏”|“錄制新宏”菜單項(xiàng),在彈出的下示對(duì)話框中輸入宏名字“學(xué)生檔案”2.單擊“確定” n3.輸入表格內(nèi)容(1)單擊a1單元格,在其中輸入“2001級(jí)學(xué)生檔案”。(2)單擊a2單元格,在其中輸入“學(xué)號(hào)”。(3)單擊b2單元格,在其中輸入“姓名”。(4)單擊c2單元格,在其中輸入“班級(jí)”。(5)單擊d2單元格,在其中輸入“

4、性別”。(6)單擊e2單元格,在其中輸入“籍貫”。(7)單擊f2單元格,在其中輸入“寢室”。(8)單擊g2單元格,在其中輸入“電話號(hào)碼”。(9)選擇a1:g1單元格區(qū)域,然后單擊工具條中的跨列居中按鈕。(10)單擊“停止”記錄制工具條中的停止按鈕。(11)保存該工作簿為“學(xué)籍檔案.xls”。n4.停止錄制,查看錄制的宏n選擇“工具”|“宏”|“停止錄制”n選擇“工具”|“宏”|“宏”菜單項(xiàng),會(huì)顯示“宏”對(duì)話框。選中其中的“學(xué)生檔案”,單擊“編輯” 。n宏代碼宏代碼n1sub 學(xué)生檔案學(xué)生檔案()n2 學(xué)生檔案學(xué)生檔案 macron3 宏由宏由 dk 錄制,時(shí)間錄制,時(shí)間: 2004-7-18n

5、4 快捷鍵快捷鍵: ctrl+sn5range(a1).selectn6activecell.formular1c1 = 2001級(jí)一班學(xué)生檔案級(jí)一班學(xué)生檔案n7range(a2).selectn8activecell.formular1c1 = 學(xué)號(hào)學(xué)號(hào)n9range(b2).selectn10activecell.formular1c1 = 姓名姓名n11range(c2).selectn12activecell.formular1c1 = 班級(jí)班級(jí)n13range(d2).selectn14activecell.formular1c1 = 性別性別n15range(e2).selectn

6、16activecell.formular1c1 = 籍貫籍貫n17range(f2).selectn18activecell.formular1c1 = 寢室寢室n19range(g2).selectn20activecell.formular1c1 = 電話號(hào)碼n21range(a1:g1).selectn22 with selectionn23.horizontalalignment = xlcentern24.verticalalignment = xlbottomn25.wraptext = falsen26.orientation = 0n27.addindent = falsen

7、28.shrinktofit = falsen29end withn30 selection.mergen31end subsub 宏名( ) 命令代碼1 命令代碼2 end subwith selection end withn保存在個(gè)人宏工作簿“personal.xls”中。n保存在專門(mén)保存宏的“新的工作簿”中。n 保存在建立宏的當(dāng)前工作薄中。n通過(guò)快捷鍵運(yùn)行宏n通過(guò)對(duì)話框運(yùn)行宏n通過(guò)自定義工具按鈕運(yùn)行宏n通過(guò)圖形控件或窗體命令按鈕運(yùn)行宏n通過(guò)自定義菜單運(yùn)行宏(以后再講) n在計(jì)算機(jī)中,數(shù)據(jù)也是按不同的類別進(jìn)行運(yùn)算和保在計(jì)算機(jī)中,數(shù)據(jù)也是按不同的類別進(jìn)行運(yùn)算和保存的,人們稱之為數(shù)據(jù)類型。同

8、種類型的數(shù)據(jù)占用存的,人們稱之為數(shù)據(jù)類型。同種類型的數(shù)據(jù)占用相同大小的存儲(chǔ)空間,相互之間可以進(jìn)行計(jì)算、比相同大小的存儲(chǔ)空間,相互之間可以進(jìn)行計(jì)算、比較或賦值等操作;不同類型的數(shù)據(jù)占用的存儲(chǔ)空間較或賦值等操作;不同類型的數(shù)據(jù)占用的存儲(chǔ)空間大小不一定相同,且相互之間不能進(jìn)行計(jì)算和比較大小不一定相同,且相互之間不能進(jìn)行計(jì)算和比較等操作等操作 。(1)常量)常量 n數(shù)值常量數(shù)值常量 ,如:1,2,65,98.65等n字符及字符串常量字符及字符串常量 n字符類型的常量稱為字符常量,字符常量要用定界符雙引號(hào)(“ ”)界定。例如,“d”、“5”、“a”等都是字符常量。n符號(hào)常量符號(hào)常量 nconst 常量名

9、=常量值n例如,const pi=3.14,const abc=ok ! china! n變量是在程序運(yùn)行期間其值可以發(fā)生變化的數(shù)據(jù)。n例如:1 dim a,b as integer2 a=13 b=24 a=4+b5 a=3a在本程序段中有在本程序段中有3個(gè)不同的值,這就是變!個(gè)不同的值,這就是變!nvba數(shù)值數(shù)據(jù)類型 數(shù)據(jù)類型數(shù)據(jù)類型存儲(chǔ)空間存儲(chǔ)空間數(shù)數(shù) 據(jù)據(jù) 范范 圍圍byte1 字節(jié)字節(jié)0255boolean2字節(jié)字節(jié)true 或或 falseinteger 2 字節(jié)字節(jié)-32 76832 767long4 字節(jié)字節(jié)-2 147 483 6482 147 483 647single4

10、字節(jié)字節(jié)負(fù)數(shù):負(fù)數(shù):-3.402823e38-1.401298e-45正數(shù):正數(shù): 1.401298e-453.402823e38double8 字節(jié)字節(jié)負(fù)數(shù):負(fù)數(shù):1.79769313486232e308-4.94065645841247e-324正數(shù):正數(shù):4.94065645841247e-3241.79769313486232e308currency8 字節(jié)字節(jié)-922337203685477.5808922337203685477.5807date8字節(jié)字節(jié)0100年年1月月1日到日到9999年年12月月31日日object4字節(jié)字節(jié)任何對(duì)象引用任何對(duì)象引用string字符長(zhǎng)度字符長(zhǎng)

11、度分為定長(zhǎng)和可變長(zhǎng)度兩種,可變長(zhǎng)可達(dá)分為定長(zhǎng)和可變長(zhǎng)度兩種,可變長(zhǎng)可達(dá)020億個(gè)字符,定長(zhǎng)最多億個(gè)字符,定長(zhǎng)最多65536個(gè)字符個(gè)字符variant(數(shù)字?jǐn)?shù)字) 16字節(jié)字節(jié)任何數(shù)字,最大達(dá)到任何數(shù)字,最大達(dá)到double的數(shù)值范圍的數(shù)值范圍variant(字符字符) 22+字符串長(zhǎng)度字符串長(zhǎng)度約約020億億n字符串類型n在vba中有兩種類型的字符串,變長(zhǎng)與定長(zhǎng)的字符串。 dim s1 as string /變長(zhǎng)類型dim s2 as string *10 /定長(zhǎng)類型s1=dddkdk s2=d1234567890sssss n布爾類型是比較運(yùn)算或邏輯運(yùn)算的結(jié)果值,它只有兩個(gè)取值:true和f

12、alse。true是比較結(jié)果為真時(shí)的值,false是比較結(jié)果為假時(shí)的值。 dim a as boolean dim b as boolean a=35 b=truen日期型數(shù)據(jù)用于保存日期,占8個(gè)字節(jié)的存儲(chǔ)空間,以浮點(diǎn)數(shù)值形式保存日期,可以表示的日期范圍從公元100年1月1日到公元9999 年12月31日,而時(shí)間可以從0:00:00 到 23:59:59。 n日期文字以“#”作界定符。dim d1,d2 as dated1=# 1 jul 98 # d1的取值是1998年7月1號(hào)d2=# 12/2/2000 # d2的值是2000年12月2號(hào)nvariant 是一種特殊的數(shù)據(jù)類型,除了定長(zhǎng) s

13、tring 數(shù)據(jù)及用戶定義類型外,它可以包含任何種類的數(shù)據(jù)。 dim ar as variantar = 12ar = string typear = abc & arar = 12.23在本例中,在本例中,ar的類型是不定的!的類型是不定的!n在vba中,可以聲明一個(gè)數(shù)組來(lái)代表一組具有相同數(shù)據(jù)類型的數(shù)據(jù),它就是數(shù)組。假設(shè)一個(gè)班有假設(shè)一個(gè)班有20個(gè)同學(xué),每個(gè)同學(xué)有個(gè)同學(xué),每個(gè)同學(xué)有5門(mén)課程,可以定義一個(gè)門(mén)課程,可以定義一個(gè)20行行5列的二維數(shù)組來(lái)保存他們的成績(jī)列的二維數(shù)組來(lái)保存他們的成績(jī)dim stu(1 to 20, 1 to 5) as single這條命令定義了一個(gè)二維表格,如下所示。這

14、條命令定義了一個(gè)二維表格,如下所示。stu(1,1)=78stu(1,2)=90stu(1,3)=87stu(1,4)=88stu(1,5)=76數(shù)組訪問(wèn)方法數(shù)組訪問(wèn)方法78n計(jì)算機(jī)程序設(shè)計(jì)中的對(duì)象是從現(xiàn)實(shí)世界中抽象出來(lái)的,它與現(xiàn)實(shí)世界中的對(duì)象具有相同的含義。n對(duì)象具有屬性和方法兩種特性。年齡:年齡:30學(xué)歷:碩士學(xué)歷:碩士身高:身高:173cm體重:體重:69公斤公斤說(shuō)自己的年齡說(shuō)自己的年齡學(xué)習(xí)學(xué)習(xí)授課授課李立李立屬性屬性方法方法對(duì)象屬性語(yǔ)法規(guī)則對(duì)象屬性語(yǔ)法規(guī)則李立李立.年齡年齡=32李立李立.體重體重=70方法的調(diào)用也要按這種語(yǔ)法規(guī)則方法的調(diào)用也要按這種語(yǔ)法規(guī)則李立李立.學(xué)習(xí)學(xué)習(xí)李立李立.

15、授課授課子程序是vba的最小程序單位,它必須獨(dú)立存在,但在一個(gè)子程序中可以調(diào)用另外一個(gè)子程序。它有兩種形式,第一種沒(méi)有參數(shù),第二種有參數(shù) sub 子程序名子程序名 子程序代碼子程序代碼 end subsub 子程序名子程序名(p1, p2, p3) 子程序代碼子程序代碼 end sub1)直接調(diào)用n直接調(diào)用子程序名,如果有參數(shù),則在子程序后面直接寫(xiě)上調(diào)用參數(shù);2)用call命令調(diào)用n在call命令的后面寫(xiě)上了程序的名字,如果子程序有參數(shù),則必須將參數(shù)寫(xiě)在括號(hào)中。 1 sub main()2 housecalc 99800, 431003 call housecalc(380950, 49500

16、)4 circlearea (4)5 circlearea 46 message7 end subsub housecalc(price as single, wage as single) if 3*wage 1500 then rate=0.1 else rate=0.05 if 條件 then 語(yǔ)句組1 else 語(yǔ)句組2 end iffunction abc (a, b)if a b then t = a a = b b = tend ifabc=aend function例如例如if 條件條件1 then 語(yǔ)句組語(yǔ)句組1elseif 條件條件2 then 語(yǔ)句組語(yǔ)句組2 elseif

17、 條件條件n then 語(yǔ)句組語(yǔ)句組nelse 語(yǔ)句組語(yǔ)句組n+1end if n某汽車出租公司可為顧客提供運(yùn)送貨物的業(yè)務(wù),根據(jù)貨物的重量及路程可對(duì)運(yùn)費(fèi)進(jìn)行適當(dāng)?shù)膬?yōu)惠。設(shè)運(yùn)費(fèi)f(單位為元),重量p(單位為噸),路程s(公里)及優(yōu)惠系數(shù)(d)之間的關(guān)系式為:f=p*s*w*(1-d)。n優(yōu)惠系數(shù)d與路程遠(yuǎn)近的關(guān)系如下,編寫(xiě)計(jì)算折扣的函數(shù)1000s%101000s750%7750s500%5500s250%2250s0dn計(jì)算折扣的函數(shù)計(jì)算折扣的函數(shù)function d(s) if s = 1000 then d = 0.1 elseif s = 750 then d = 0.07 elseif

18、s = 500 then d = 0.05 elseif s = 250 then d = 0.02 else d = 0 end ifend functionselect case語(yǔ)句的語(yǔ)法結(jié)構(gòu)如下。select case 測(cè)試表測(cè)試表達(dá)式達(dá)式case 表達(dá)式表達(dá)式1 語(yǔ)句組語(yǔ)句組1case 表達(dá)式表達(dá)式2 語(yǔ)句組語(yǔ)句組2 case else 語(yǔ)句組語(yǔ)句組n end select n某學(xué)校的職工人事數(shù)據(jù)存在excel工作表中,如圖所示。現(xiàn)在,要按職稱提升每位職工的工資,各種職稱的工資增長(zhǎng)情況如下:教授150、副教授130、講師100、助教80、高級(jí)工程師150、工程師140、助工90。n用s

19、elect語(yǔ)句編寫(xiě)計(jì)算增加工資的 函數(shù)。function addsalary(職稱職稱) 職稱作為一個(gè)參數(shù)職稱作為一個(gè)參數(shù) select case 職稱職稱 case 教授教授, 高級(jí)工程師高級(jí)工程師 addsalary = 150 case 副教授副教授 addsalary = 130 case 講師講師 addsalary = 100 case 助教助教 addsalary = 80 case 工程師工程師 addsalary = 140 case 助工助工 addsalary = 90 end selectend functionn在計(jì)算機(jī)中,一些被重復(fù)執(zhí)行的語(yǔ)句是通過(guò)循環(huán)來(lái)完成的。fo

20、r counter = start to end step 步長(zhǎng)步長(zhǎng) 循環(huán)語(yǔ)句循環(huán)語(yǔ)句1 循環(huán)語(yǔ)句循環(huán)語(yǔ)句2 循環(huán)語(yǔ)句循環(huán)語(yǔ)句3 循環(huán)語(yǔ)句循環(huán)語(yǔ)句nnext countern 某公司職工檔案數(shù)據(jù)保存在excel工作表中,如下圖所示。該公司共有1 234名職工,每月要從工資表中扣除一定的住房公積金,假設(shè)住房公積金按以下的百分比扣除。 n編寫(xiě)計(jì)算公積金比例的宏程序。2000s%102000s1500%71500s1200%51200s800%2800s500%1500s0dfunction countrate(salary as double)這個(gè)函數(shù)計(jì)算公積金的百分比這個(gè)函數(shù)計(jì)算公積金的百分比

21、dim rate as double if salary 2000 then rate = 0.1 elseif salary 1500 then rate = 0.07 elseif salary 1200 then rate = 0.05 elseif salary 1000 then rate = 0.02 elseif salary 800 then rate = 0.01 else rate = 0 end if countrate = rateend function數(shù)函的例比金積公算計(jì)數(shù)函的例比金積公算計(jì)sub countdata()for i = 3 to 1236 從工作表的

22、第3行開(kāi)始計(jì)算。第3行中的是第1位職工工資 r = countrate(cells(i, 2) 計(jì)算出第i位職工的公積金比例 cells(i, 3) = r 將第i位職工的公積金比例填入本行的第3列中 cells(i, 3).style = percent 將公積金比例的格式設(shè)置為百分比 cells(i, 4) = r * cells(i, 2) 計(jì)算第1位職工的公積金并填入本行的第4列中 cells(i, 5) = cells(i, 2) - cells(i, 4) 計(jì)算第i位職工的應(yīng)發(fā)工資并填入第5列中nextend subn在事先知道循環(huán)次數(shù)時(shí),用for循環(huán)方便。如果事先并不知道循環(huán)次數(shù)

23、,但知道執(zhí)行或結(jié)束循環(huán)的條件,則用doloop循環(huán)或whilewend循環(huán)。nwhile循環(huán)的語(yǔ)法結(jié)構(gòu)如下 while 判定條件判定條件 語(yǔ)句語(yǔ)句1 語(yǔ)句語(yǔ)句2 wend 第一種結(jié)構(gòu)為:第一種結(jié)構(gòu)為:do while 判定條件判定條件 loop第二種結(jié)構(gòu)為:第二種結(jié)構(gòu)為:do loop while 判定條件判定條件第三種結(jié)構(gòu)為:第三種結(jié)構(gòu)為:do until判定條件判定條件 loop 第四種結(jié)構(gòu)為:第四種結(jié)構(gòu)為:do loop until 判定條件判定條件n在上節(jié)的for循環(huán)實(shí)例中,假設(shè)并不知道有多少位職 工 , 在 其 他 條 件 都 相 同 的 條 件 下 , 現(xiàn) 用whilewend循環(huán)

24、結(jié)構(gòu)來(lái)計(jì)算每位職工的住房公積金比例、應(yīng)交公積金和實(shí)際發(fā)放工資。n改寫(xiě)的函數(shù)如下 sub countdatab()i = 3 第第1位職工在第位職工在第3行行while not (isempty(cells(i, 2) 從工作表的第從工作表的第3行開(kāi)始計(jì)算行開(kāi)始計(jì)算 r = countrate(cells(i, 2) 計(jì)算出第計(jì)算出第i位職工的公積金比例位職工的公積金比例 cells(i, 3) = r 把第把第i位職工的公積金比例填入本行的第位職工的公積金比例填入本行的第3列中列中 cells(i, 3).style = percent 把公積金比例的格式設(shè)置為百分比把公積金比例的格式設(shè)置為百

25、分比 cells(i, 4) = r * cells(i, 2) 計(jì)算第計(jì)算第1位職工的公積金并填入本行的第位職工的公積金并填入本行的第4列中列中 cells(i, 5) = cells(i, 2) - cells(i, 4) 計(jì)算第計(jì)算第i位職工的應(yīng)發(fā)工資并填入本行第位職工的應(yīng)發(fā)工資并填入本行第5列中列中 i = i + 1 計(jì)算下一位職工的公積金計(jì)算下一位職工的公積金wendend subsub countdatac ( )i = 3 do r = countrate(cells(i, 2) cells(i, 3) = r cells(i, 3).style = percent cells

26、(i, 4) = r * cells(i, 2) cells(i, 5) = cells(i, 2) - cells(i, 4) i = i + 1loop until (isempty(cells(i, 2)end sub n循環(huán)的主要功能是進(jìn)行vba代碼的重復(fù)執(zhí)行,數(shù)組的主要功能是存儲(chǔ)大量的數(shù)據(jù)。n在計(jì)算機(jī)應(yīng)用中,數(shù)組和循環(huán)相結(jié)合能夠解決許多實(shí)際問(wèn)題。例如大批量數(shù)據(jù)的排序、統(tǒng)計(jì)、檢索等功能。 n案例n某學(xué)校每年對(duì)新生都要進(jìn)行一次英語(yǔ)入學(xué)測(cè)試,以了解每位學(xué)生的英語(yǔ)能力??荚囃戤吅螅y(tǒng)計(jì)每個(gè)分?jǐn)?shù)段的人數(shù),并根據(jù)學(xué)生的成績(jī)將他們分為a、b、c若干個(gè)班,第125名同學(xué)進(jìn)入a班,第2650名同學(xué)進(jìn)

27、入b班,其余的以此類推。該校每年招收的人數(shù)都有細(xì)小的差別。假設(shè)學(xué)生的英語(yǔ)測(cè)試成績(jī)?nèi)缦马?yè)圖示。n n編寫(xiě)一個(gè)宏完成以下功能。編寫(xiě)一個(gè)宏完成以下功能。n自動(dòng)統(tǒng)計(jì)出各分?jǐn)?shù)段的人數(shù),并將統(tǒng)計(jì)結(jié)果保存在一個(gè)自動(dòng)統(tǒng)計(jì)出各分?jǐn)?shù)段的人數(shù),并將統(tǒng)計(jì)結(jié)果保存在一個(gè)新的工作表中。新的工作表中。n對(duì)所有的考試成績(jī)進(jìn)行排序。對(duì)所有的考試成績(jī)進(jìn)行排序。n根據(jù)排名對(duì)學(xué)生進(jìn)行分班,每個(gè)班根據(jù)排名對(duì)學(xué)生進(jìn)行分班,每個(gè)班25名學(xué)生,每個(gè)班保名學(xué)生,每個(gè)班保存在一個(gè)新的工作表中。存在一個(gè)新的工作表中。n本例程序代碼較多,不便ppt演示,可直接查看excel中的宏。n變量的作用域是指變量的有效范圍。變量的作用域是指變量的有效范圍。n

28、局部變量局部變量n在在vba宏或函數(shù)內(nèi)部定義的變量,只能在定義它的函宏或函數(shù)內(nèi)部定義的變量,只能在定義它的函數(shù)或宏范圍內(nèi)可用,這種變量稱為局部變量。數(shù)或宏范圍內(nèi)可用,這種變量稱為局部變量。n模塊級(jí)變量模塊級(jí)變量 n如果一個(gè)變量在模塊的開(kāi)始部分定義,且不包含在任如果一個(gè)變量在模塊的開(kāi)始部分定義,且不包含在任何宏或函數(shù)體內(nèi),則在本模塊內(nèi)的所有宏或函數(shù)中都何宏或函數(shù)體內(nèi),則在本模塊內(nèi)的所有宏或函數(shù)中都可以使用它可以使用它 。n全局變量全局變量 n在整個(gè)應(yīng)用程序的各個(gè)模塊之間都可共用的變量。在整個(gè)應(yīng)用程序的各個(gè)模塊之間都可共用的變量。 n宏或函數(shù)的私有變量,可直接在宏或函數(shù)體內(nèi)定義。宏或函數(shù)的私有變量

29、,可直接在宏或函數(shù)體內(nèi)定義。n在模塊的聲明段中使用在模塊的聲明段中使用dim語(yǔ)句聲明一個(gè)模塊級(jí)變量。語(yǔ)句聲明一個(gè)模塊級(jí)變量。n在模塊的聲明段中(或模塊內(nèi)),使用在模塊的聲明段中(或模塊內(nèi)),使用public 語(yǔ)句,而非語(yǔ)句,而非dim語(yǔ)句來(lái)聲明一個(gè)公共變量。聲明方式如下。語(yǔ)句來(lái)聲明一個(gè)公共變量。聲明方式如下。npublic 變量名表變量名表 as 數(shù)據(jù)類型數(shù)據(jù)類型n在宏或函數(shù)的名稱前也可以加上在宏或函數(shù)的名稱前也可以加上public關(guān)鍵字,這樣的宏關(guān)鍵字,這樣的宏或函數(shù)就是全局宏(全局函數(shù))。例如或函數(shù)就是全局宏(全局函數(shù))。例如,public ma, ya, ta as integer。 n

30、假設(shè)有一個(gè)教師的檔案表(部分?jǐn)?shù)據(jù)),如圖所示。編寫(xiě)宏將其中的男教師和女教師分別保存在新工作表中。public n聲明一個(gè)全局變量用于保存教師總?cè)藬?shù)聲明一個(gè)全局變量用于保存教師總?cè)藬?shù)public tea(100,5) as variant聲明一個(gè)全局?jǐn)?shù)組保存教師的所有數(shù)據(jù),聲明一個(gè)全局?jǐn)?shù)組保存教師的所有數(shù)據(jù),sub readdata()dim i,j as integer定義兩個(gè)只能在本宏內(nèi)部分使用的局部變量定義兩個(gè)只能在本宏內(nèi)部分使用的局部變量worksheets(教師總表教師總表).activate 激活教師工作表激活教師工作表n=1while not isempty(cells (n,1)

31、如果教師工作表中的第一列數(shù)據(jù)非空,就將如果教師工作表中的第一列數(shù)據(jù)非空,就將for i=1 to 5該行的數(shù)據(jù)讀入全局?jǐn)?shù)組中該行的數(shù)據(jù)讀入全局?jǐn)?shù)組中tea(n,i)=cells(n,i)next in=n+1讀入一個(gè)教師的數(shù)據(jù)后,教師的人數(shù)增加一個(gè)讀入一個(gè)教師的數(shù)據(jù)后,教師的人數(shù)增加一個(gè)wendend subdim i,j,k as integersub man()sheets.add 插入一個(gè)工作表,在其中保存男教師的數(shù)據(jù)插入一個(gè)工作表,在其中保存男教師的數(shù)據(jù)active sheet.name=男教師男教師修改工作表的名稱為修改工作表的名稱為“男教師男教師”for j=1 to 5cells

32、(1,j)=tea(1,j)讀入第一行數(shù)據(jù)即表頭到二維數(shù)組的第一行讀入第一行數(shù)據(jù)即表頭到二維數(shù)組的第一行next jk=2k統(tǒng)計(jì)男教師的人數(shù)統(tǒng)計(jì)男教師的人數(shù)for i=2 to n從數(shù)組的第從數(shù)組的第2行開(kāi)始分析數(shù)據(jù)行開(kāi)始分析數(shù)據(jù)if tea(i,3)=男男then如果數(shù)組的第如果數(shù)組的第3列中的數(shù)據(jù)為列中的數(shù)據(jù)為“男男”for j=1 to 5cells(k,j)=tea(i,j) 將將“男男”教師的數(shù)據(jù)從數(shù)組讀入工作表教師的數(shù)據(jù)從數(shù)組讀入工作表next jk=k+1end ifnext iend subn窗體是vba的一種控件,可以用來(lái)顯示excel工作表中的數(shù)據(jù),也可以用來(lái)設(shè)計(jì)用戶輸入數(shù)

33、據(jù)的界面。n窗體必須與宏程序結(jié)合使用,通過(guò)宏可以將窗體與excel的工作表、自定義菜單、按鈕或圖形控件結(jié)合在一起。n為上例的教師管理工作薄建立窗體,該窗體可用于顯示、修改及輸入“教師總表”中的數(shù)據(jù)。窗體的樣式如下圖所示。(1)打開(kāi)“教師管理宏”工作薄,進(jìn)入其vba編程環(huán)境。(2)選擇vba的“插入”|“用戶窗體”,會(huì)見(jiàn)到圖示的設(shè)計(jì)界面。這是絕大多數(shù)這是絕大多數(shù)wndows編程工具都支持的工具編程工具都支持的工具編程工具,一定要掌握編程工具,一定要掌握其用法!其用法!屬性對(duì)話框中重要的設(shè)計(jì)屬性對(duì)話框中重要的設(shè)計(jì)工具,它標(biāo)準(zhǔn)而通用,通工具,它標(biāo)準(zhǔn)而通用,通過(guò)它能夠輕松地修改與設(shè)過(guò)它能夠輕松地修改與

34、設(shè)置窗體中各控件的大小、置窗體中各控件的大小、顏色、名字等。顏色、名字等。在窗體中添加一在窗體中添加一標(biāo)簽標(biāo)簽控控件,然后通過(guò)屬性對(duì)話件,然后通過(guò)屬性對(duì)話框修改該控件的背景色、框修改該控件的背景色、標(biāo)題內(nèi)容和字體大小標(biāo)題內(nèi)容和字體大小n向窗體中添加標(biāo)簽、編輯框和命令按鈕等控件,調(diào)整窗體大小和控件的位置,設(shè)置各控件的字體、字型、前景和背景等屬性,如樣圖所示。n雙擊要編寫(xiě)事件程序的控件,會(huì)見(jiàn)下示編程界面1、選擇要編寫(xiě)事件程、選擇要編寫(xiě)事件程序的對(duì)象序的對(duì)象2、選擇事件、選擇事件3、輸入程序代碼、輸入程序代碼n窗體初始化事件程序private sub userform_initialize() wo

35、rksheets(“教師總表教師總表”).activate 激活教師工作表激活教師工作表 n = 2 第第1次顯示工作表次顯示工作表“教師總表教師總表”的第的第2行數(shù)據(jù)行數(shù)據(jù) display 調(diào)用顯示宏,將工作表中的數(shù)據(jù)顯示在窗體的文本框調(diào)用顯示宏,將工作表中的數(shù)據(jù)顯示在窗體的文本框中中end subprivate sub 上一位上一位_click( ) if n 2 then n = n 1 工作表行號(hào)減工作表行號(hào)減1, call display 將工作表的第將工作表的第n行顯示在文本框中行顯示在文本框中end subsub display()textbox1.value=cells(n,1

36、)將工作表的第將工作表的第1列中的數(shù)據(jù)顯示在列中的數(shù)據(jù)顯示在textbox1文本框中文本框中textbox2.value=cells(n,2)textbox3.value=cells(n,3)textbox4.value=cells(n,4)textbox5.value=cells(n,5)textbox6.value=cells(n,6)textbox7.value=cells(n,7)textbox8.value=cells(n,8)end sub private sub退出退出_click() teacher.hideend subprivate sub 新教師新教師_click() w

37、hile not (isempty(cells(n,1) 定位到工作表定位到工作表的最后一行的最后一行 n=n+1 wend displayend subn功能nmsgbox對(duì)話框函數(shù)可用于顯示一些簡(jiǎn)單的信息,可以用該函數(shù)向用戶顯示一些提示信息。n函數(shù)用法nmsgbox(prompt, buttons , title , helpfile, context)n其中,prompt是一個(gè)字符串,顯示在對(duì)話框中的消息。nbuttons是一個(gè)常數(shù),指定顯示按鈕的數(shù)目及形式,使用的圖標(biāo)樣式。ntitle表示對(duì)話框的標(biāo)題。 按鈕選項(xiàng)的常數(shù)按鈕選項(xiàng)的常數(shù)代表的數(shù)值代表的數(shù)值功功 能能vbokonly0只顯示

38、只顯示 ok 按鈕按鈕vbokcancel1顯示顯示 ok 及及 cancel 按鈕按鈕vbabortretryignore 2顯示顯示 abort、retry 及及 ignore 按鈕按鈕vbyesnocancel3顯示顯示 yes、no 及及 cancel 按鈕按鈕vbyesno4顯示顯示 yes 及及 no 按鈕按鈕vbretrycancel5顯示顯示 retry 及及 cancel 按鈕按鈕按鈕常數(shù)按鈕常數(shù)代表的數(shù)值代表的數(shù)值功功 能能vbretrycancel 5顯示顯示 retry 及及 cancel 按鈕按鈕vbcritical16顯示顯示 critical message 圖標(biāo)

39、圖標(biāo)vbquestion32顯示顯示 warning query 圖標(biāo)圖標(biāo)vbexclamation 48顯示顯示 warning message 圖標(biāo)圖標(biāo)vbinformation 64顯示顯示 information message 圖標(biāo)圖標(biāo)sub msg1() msgbox 第一次使用對(duì)話框第一次使用對(duì)話框 a = sin(35) b = msgbox(a, vbokcancel)end sub運(yùn)行結(jié)果運(yùn)行結(jié)果sub msg2() dim msg, style, title, response, mystring msg = 警告,系統(tǒng)有嚴(yán)重錯(cuò)誤!警告,系統(tǒng)有嚴(yán)重錯(cuò)誤! + chr(13

40、) & chr(10) _ + 想繼續(xù)進(jìn)行下面的操作想繼續(xù)進(jìn)行下面的操作? style = vbyesno + vbcritical 定義按鈕。同時(shí)顯示按鈕、圖標(biāo)定義按鈕。同時(shí)顯示按鈕、圖標(biāo) title = 警告警告 定義標(biāo)題定義標(biāo)題 response = msgbox(msg, style, title) 調(diào)用調(diào)用msgbox函數(shù)函數(shù) if response = vbyes then 用戶按下用戶按下“是是” mystring = yes 完成某操作完成某操作 else 用戶按下用戶按下“否否” mystring = no 完成某操作完成某操作 end ifend sub n功能ninput

41、box函數(shù)可以接收用戶的輸入信息,而且可以將輸入信息寫(xiě)入excel工作表中。n用法ninputbox (prompt, title , default , xpos , ypos , helpfile, context) n其中其中nprompt是出現(xiàn)在輸入對(duì)話框中的提示信息是出現(xiàn)在輸入對(duì)話框中的提示信息 ntitle是輸入對(duì)話框的標(biāo)題是輸入對(duì)話框的標(biāo)題nxpos,ypos指定輸入文本框中指定輸入文本框中inputbox中的坐標(biāo)位置中的坐標(biāo)位置 nhelpfile、context指定該對(duì)話框的幫助信息。指定該對(duì)話框的幫助信息。 sub ss() worksheets(sheet1).activ

42、ate dim message,titl1,default,myvalue message= 請(qǐng)輸入用戶名請(qǐng)輸入用戶名設(shè)置提示信息設(shè)置提示信息 title=用戶名用戶名設(shè)置標(biāo)題設(shè)置標(biāo)題 default=張三英張三英設(shè)置默認(rèn)值設(shè)置默認(rèn)值 myvalue=inputbox(message,title,default)用變量作參數(shù)調(diào)用用變量作參數(shù)調(diào)用inputbox函數(shù)函數(shù) pass=inputbox(請(qǐng)輸入密碼請(qǐng)輸入密碼,密碼密碼)直接調(diào)用直接調(diào)用inputbox函數(shù)輸入函數(shù)輸入用戶密碼用戶密碼 if pass=111111 then cells(1,1)= 用戶名用戶名 cells(1,2)=

43、密碼密碼 cells(2,1)= myvalue cells(2,2)= pass else msgbox(密碼不正確,你無(wú)權(quán)進(jìn)入本系統(tǒng)密碼不正確,你無(wú)權(quán)進(jìn)入本系統(tǒng)) end ifend sub n該函數(shù)運(yùn)行時(shí)將顯示下示兩個(gè)對(duì)話框,將根據(jù)用戶輸入進(jìn)行用戶名與用戶密碼的判定,然后將結(jié)果寫(xiě)入工作表中。n菜單和工具欄可用于執(zhí)行excel命令。菜單顯示了一系列命令。大多數(shù)菜單位于菜單欄中,菜單欄常在屏幕的頂部。在菜單中有各種不同的標(biāo)記。暫不可用的菜單暫不可用的菜單將彈出對(duì)話框的菜單將彈出對(duì)話框的菜單具有相級(jí)菜單具有相級(jí)菜單下面還有菜單項(xiàng)下面還有菜單項(xiàng)nexcel的菜單和工具欄可以隨時(shí)修改系統(tǒng)菜單,如刪

44、除其中從不使用的菜單項(xiàng),增加需要的菜單項(xiàng),或者在系統(tǒng)菜單中添加自定義菜單項(xiàng) 。n修改方法是選擇“工具”|“自定義”菜單項(xiàng) ,在彈出下示對(duì)話框后,就可以進(jìn)行各種修改了。n 修改的方法參考教材n認(rèn)識(shí)菜單的各組成部分n1)建立菜單欄nmenubars.add 教師管理n2)在菜單欄中建立菜單nmenubars(教師管理).menus.add 學(xué)生管理(&s)n menubars(教師管理).menus.add 教師管理(&t)n menubars(教師管理).menus.add 成績(jī)管理(&m)n menubars(教師管理).menus.add 查詢(&p)n menubars(教師管理).men

45、us.add 學(xué)籍管理(&d)n menubars(教師管理).menus.add 系統(tǒng)維護(hù)(&u)n menubars(教師管理).menus.add 幫助系統(tǒng)(&h) menubars(教師管理教師管理).menus(學(xué)生管理學(xué)生管理(&s).menuitems.add 新生入學(xué)新生入學(xué), xsmenubars(教師管理教師管理).menus(學(xué)生管理學(xué)生管理(&s).menuitems.add 降級(jí)降級(jí), jjmenubars(教師管理教師管理).menus(學(xué)生管理學(xué)生管理(&s).menuitems.add -menubars(教師管理教師管理).menus(學(xué)生管理學(xué)生管理(&s).menuitems.add 處分處分, cfmenubars(教師管理教師管理).menus(學(xué)生管理學(xué)生管理(&s).menuitems.add 畢業(yè)畢業(yè), bymenub

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論