最棒最經(jīng)典Excel-VBA程序設(shè)計_第1頁
最棒最經(jīng)典Excel-VBA程序設(shè)計_第2頁
最棒最經(jīng)典Excel-VBA程序設(shè)計_第3頁
最棒最經(jīng)典Excel-VBA程序設(shè)計_第4頁
最棒最經(jīng)典Excel-VBA程序設(shè)計_第5頁
已閱讀5頁,還剩186頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-3"\h\z一、VBA語言根底1第一節(jié)標(biāo)識符1第二節(jié)運(yùn)算符1第三節(jié)數(shù)據(jù)類型1第四節(jié)變量與常量1第五節(jié)數(shù)組2第六節(jié)注釋和賦值語句2第七節(jié)書寫標(biāo)準(zhǔn)2第八節(jié)判斷語句2第九節(jié)循環(huán)語句3第十節(jié)其他類語句和錯誤語句處理4第十一節(jié)過程和函數(shù)4一.Sub過程5二.Function函數(shù)5三.Property屬性過程和Event事件過程5第十二節(jié)內(nèi)部函數(shù)5一.測試函數(shù)5二.?dāng)?shù)學(xué)函數(shù)6三.字符串函數(shù)6四.轉(zhuǎn)換函數(shù)6五.時間函數(shù)6第十三節(jié)文件操作7文件7刪除7翻開7讀入7寫入7關(guān)閉8其他文件函數(shù)8二、VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)1第一課VBA是什么11.1VBA是什么11.2EXCEL環(huán)境中基于應(yīng)用程序自動化的優(yōu)點11.3錄制簡單的宏21.4執(zhí)行宏21.5查看錄制的代碼21.6編輯錄制的代碼31.7錄制宏的局限性41.8小結(jié)4第二課處理錄制的宏42.1為宏指定快捷鍵42.2決定宏保存的位置52.3個人宏工作簿52.3.1保存宏到個人宏工作簿52.3.2使用并編輯個人宏工作簿中的宏52.4將宏指定給按鈕62.5將宏指定給圖片或其他對象62.6小結(jié)7第三課學(xué)習(xí)控件73.1EXCEL開發(fā)過程簡介73.2認(rèn)識不同的控件73.3向工作表添加控件73.4設(shè)置控件的特性83.5給控件命名83.6使用用戶窗體83.7疑難解答9第四課理解變量和變量的作用94.1代碼存在的位置:模塊94.2對模塊的概覽104.2.1創(chuàng)立過程104.2.2運(yùn)行宏114.3保存對模塊所做的改變114.4變量114.4.1變量的數(shù)據(jù)類型114.4.2用Dim語句創(chuàng)立變量(聲明變量)134.4.3變量命名的慣例134.4.4使用數(shù)組144.4.5變量賦值15第五課利用VBA設(shè)置工作表使用權(quán)限151.使用With語句。172.使用對象變量。17方法3:減少對象的激活和選擇17方法4:關(guān)閉屏幕更新18第六課提高Excel中VBA的效率19方法1:盡量使用VBA原有的屬性、方法和Worksheet函數(shù)19方法2:盡量減少使用對象引用,尤其在循環(huán)中191.使用With語句。192.使用對象變量。203.在循環(huán)中要盡量減少對象的訪問。20方法3:減少對象的激活和選擇20方法4:關(guān)閉屏幕更新20第七課如何在Excel里使用定時器20三、學(xué)習(xí)微軟Excel2002VBA編程和XML,ASP技術(shù)22第一章電子表格自動化簡介和了解宏命令221了解宏222宏命令的普通應(yīng)用223寫宏之前的方案234錄制宏245運(yùn)行宏256修改宏代碼267添加注釋298分析宏代碼299去除宏代碼3010測試修改好的宏3111兩個層面運(yùn)行宏的方法3112完善你的宏代碼3213重新命名宏3414運(yùn)行宏的其它方法3415使用鍵盤快捷鍵運(yùn)行宏3416通過菜單運(yùn)行宏3517通過工具欄按鈕運(yùn)行宏3718通過工作表里面的按鈕運(yùn)行宏3819保存宏3920打印宏3921保存宏在個人宏工作簿3922翻開含有宏的工作簿4123VB編輯窗口4224了解工程瀏覽窗口4225了解屬性窗口4326了解代碼窗口4327VB編輯器里的其它窗口4528接下來……46第二章VBA第一步461了解指令,模塊和過程462VBA工程命名463模塊重命名474從其它工程調(diào)用過程485了解對象,屬性和方法496學(xué)習(xí)對象,屬性和方法507句法和文法528打斷很長的VBA語句549了解VBA錯誤5410查找?guī)椭?611語法和編程快捷助手5712屬性/方法列表5813常數(shù)列表5814參數(shù)信息5915快速信息5916自動完成關(guān)鍵字5917縮進(jìn)/凸出6018設(shè)置注釋塊/解除注釋塊6019使用對象瀏覽器6020使用VBA對象庫6521用對象瀏覽器來定位過程6622使用立即窗口6623獲取立即窗口里的信息6824學(xué)習(xí)對象6825電子表格單元格操作6926使用Range屬性6927使用Cells屬性6928使用Offset屬性7029選擇單元格的其它方法7130選擇行和列7131獲取工作表信息7232往工作表輸入數(shù)據(jù)7233返回工作表中的信息7234單元格格式7235移動,復(fù)制和刪除單元格7336操作工作簿和工作表7337操作窗口〔Windows〕7438管理Excel應(yīng)用程序7539接下來……75第三章了解變量,數(shù)據(jù)類型和常量751保存VBA語句的結(jié)果762變量是什么763數(shù)據(jù)類型764如何產(chǎn)生變量775如何聲明變量776明確變量的數(shù)據(jù)類型797變量賦值808強(qiáng)制聲明變量829了解變量范圍8310過程級別〔當(dāng)?shù)亍匙兞?311模塊級別變量8312工程級別變量8413變量的存活期8514了解和使用靜態(tài)變量8515聲明和使用對象變量8616使用明確的對象變量8617查找變量定義8718在VB過程里面使用常量8719內(nèi)置常量8720接下來……88第四章VBA過程:子程序和函數(shù)891.關(guān)于函數(shù)過程892.創(chuàng)立函數(shù)過程893.執(zhí)行函數(shù)過程914.從工作表里運(yùn)行函數(shù)過程915.從另外一個VBA過程里運(yùn)行函數(shù)過程936.傳遞參數(shù)937.明確參數(shù)類型948.按地址和按值傳遞參數(shù)959.使用可選的參數(shù)9610.定位內(nèi)置函數(shù)9711.使用MsgBox函數(shù)9812.MsgBox函數(shù)的運(yùn)行值10213.使用InputBox函數(shù)10214.數(shù)據(jù)類型轉(zhuǎn)變10415.使用InputBox方法10516.使用主過程和子過程10717.接下來……109第五章基于VBA做決定1091.關(guān)系和邏輯運(yùn)算符1102.If…Then語句1103.基于多于一個條件的決定1124.TheIf…Then…Else語句1135.If…Then…ElseIf語句1166.嵌套的If…Then語句1177.SelectCase語句1188.和Case子句一起使用Is1199.確定Case子句里數(shù)值的范圍12010.在Case子句里確定多個表達(dá)式12111.接下來…121第六章在VBA中重復(fù)操作1211.DoLoops:Do…While和Do…Until1212.觀察過程執(zhí)行1243.While…Wend循環(huán)1254.For…Next循環(huán)1265.ForEach…Next循環(huán)1277.提前跳出循環(huán)1288.循環(huán)嵌套1299.接下來…129第七章利用VBA數(shù)組管理數(shù)據(jù)清單和表格1291.了解數(shù)組1302.聲明數(shù)組1313.數(shù)組的上界和下界1314.在VBA過程里使用數(shù)組1315.數(shù)組和循環(huán)語句1326.使用二維數(shù)組1347.靜態(tài)和動態(tài)數(shù)組1358.數(shù)組函數(shù)1369.Array函數(shù)13710.IsArray函數(shù)13711.Erase函數(shù)13812.LBound函數(shù)和UBound函數(shù)13813.數(shù)組中的錯誤13914.數(shù)組作為參數(shù)14115.接下來…141第八章利用VBA操縱文件和文件夾1411.獲取當(dāng)前文件夾的名稱〔CurDir函數(shù)〕1422.更改文件或文件夾名稱〔Name函數(shù)〕1423.檢查文件或文件夾是否存在〔Dir函數(shù)〕1434.獲得文件修改的日期和時間〔FileDateTime函數(shù)〕1445.獲得文件大小〔FileLen函數(shù)〕1456.返回和設(shè)置文件屬性〔GetAttr函數(shù)和SetAttr函數(shù)〕1457.更改缺省文件夾或驅(qū)動器〔ChDir語句和ChDrive語句〕1468.創(chuàng)立和刪除文件夾〔MkDir語句和RmDir語句〕1469.復(fù)制文件〔FileCopy語句〕14710.刪除文件〔Kill語句〕14811.從文件讀取和寫入數(shù)據(jù)〔Input/Output〕14912.文件訪問類型14913.使用順序文件14914.讀取儲存于順序文件里的數(shù)據(jù)14915.逐行讀取文件15016.從順序文件中讀取字符15117.讀取分隔文本文件15218.往順序文件里寫數(shù)據(jù)15319.使用Write#和Print#語句15320.操作隨機(jī)文件15421.創(chuàng)立用戶定義的數(shù)據(jù)類型15522.操作二進(jìn)制文件15823.操作文件和文件夾的時髦方法15924.使用WSH獲取文件信息16125.FileSystemObjec的方法和屬性16226.對象File的屬性16527.文件夾對象屬性16528.驅(qū)動器對象屬性16629.使用WSH創(chuàng)立文本文件16730.使用WSH進(jìn)行其它操作16831.運(yùn)行其它應(yīng)用程序16932.創(chuàng)立快捷方式16933.接下來……171第九章利用VBA控制其它應(yīng)用程序1711.啟動應(yīng)用程序1712.在應(yīng)用程序之間切換1733.控制其它應(yīng)用程序1744.控制應(yīng)用程序的其它方法1755.了解自動控制1766.了解鏈接和嵌入1767.使用VBA進(jìn)行鏈接和嵌入1778和自動控制1789.了解綁定17810.后期綁定17811.早期綁定17812.建立到對象庫的引用17913.創(chuàng)立自動控制對象18014.使用CreateObject函數(shù)18015.使用自動控制創(chuàng)立一個新的Word文檔18116.使用GetObject函數(shù)18117.翻開存在的Word文檔18218.使用關(guān)鍵字New18319.使用自動控制訪問MicrosoftOutlook18420.接下來……185第十章對話框和自定義窗體1851.文件翻開和另存為對話框1882.GetOpenFilename和GetSaveAsFilename方法1923.創(chuàng)立窗體1934.創(chuàng)立用戶窗體的工具1945.標(biāo)簽1956.文字框1957.框架1968.選項按鈕1969.復(fù)選框19610.切換按鈕19611.列表框19612.復(fù)合框19613.滾動條19614.旋轉(zhuǎn)按鈕19715.圖像19716.多頁控件19717.TabStrip控件19718.RefEdit控件19719.在窗體上放置控件19720.應(yīng)用程序例如1:信息調(diào)查19821.在窗體上添加按鈕、選項框和其它控件19922.更改控件名稱20123.設(shè)置其它控件屬性20224.準(zhǔn)備工作表以儲存窗體數(shù)據(jù)20225.顯示自定義窗體20326.設(shè)置Tab順序20427.了解窗體和控件事件20428.編寫VBA過程對窗體和控件事件反響20629.編寫過程來初始化窗體20630.編寫過程填充列表框控件20831.編寫過程控制選項按鈕20832.編寫過程同步文字框和旋轉(zhuǎn)按鈕20933.編寫過程關(guān)閉用戶窗體20934.轉(zhuǎn)移窗體數(shù)據(jù)到工作表21035.使用InfoSurvey應(yīng)用程序21136.應(yīng)用程序例如2:學(xué)生和考試21137.使用多頁和TabStrip控件21138.給窗體StudentsandExams自定義窗體編寫VBA過程21339.使用自定義窗體StudentsandExams21740.接下來……220第十一章自定義集合和類模塊2201.使用集合2202.聲明自定義集合2213.給自定義集合添加對象2214.從自定義集合移出對象2225.創(chuàng)立自定義對象2236.創(chuàng)立類2247.變量聲明2248.定義類的屬性2249.創(chuàng)立PropertyGet過程22510.創(chuàng)立PropertyLet過程22511.創(chuàng)立類方法22612.創(chuàng)立類的例如22713.類模塊里的事件過程22714.創(chuàng)立用戶界面22715.觀察VBA過程的執(zhí)行23616.接下來……238一、VBA語言根底ZhouJibin2004-11-30第一節(jié)標(biāo)識符一.定義標(biāo)識符是一種標(biāo)識變量、常量、過程、函數(shù)、類等語言構(gòu)成單位的符號,利用它可以完成對變量、常量、過程、函數(shù)、類等的引用。二.命名規(guī)那么字母打頭,由字母、數(shù)字和下劃線組成,如A987b_23Abc字符長度小于40,〔Excel2002以上中文版等,可以用漢字且長度可達(dá)254個字符〕不能與VB保存字重名,如public,private,dim,goto,next,with,integer,single等第二節(jié)運(yùn)算符定義:運(yùn)算符是代表VB某種運(yùn)算功能的符號。1〕賦值運(yùn)算符=2〕數(shù)學(xué)運(yùn)算符&、+(字符連接符)、+(加)、-〔減〕、Mod〔取余〕、\〔整除〕、*〔乘〕、/〔除〕、-〔負(fù)號〕、^〔指數(shù)〕3〕邏輯運(yùn)算符Not〔非〕、And〔與〕、Or(或)、Xor(異或)、Eqv(相等)、Imp(隱含)4〕關(guān)系運(yùn)算符=〔相同〕、<>〔不等〕、>〔大于〕、<〔小于〕、>=〔不小于〕、<=〔不大于〕、Like、Is5〕位運(yùn)算符Not〔邏輯非〕、And〔邏輯與〕、Or〔邏輯或〕、Xor〔邏輯異或〕、Eqv〔邏輯等〕、Imp〔隱含〕第三節(jié)數(shù)據(jù)類型VBA共有12種數(shù)據(jù)類型,具體見下表,此外用戶還可以根據(jù)以下類型用Type自定義數(shù)據(jù)類型。數(shù)據(jù)類型類型標(biāo)識符字節(jié)字符串型String$字符長度(0-65400)字節(jié)型Byte無1布爾型Boolean無2整數(shù)型Integer%2長整數(shù)型Long&4單精度型Single!4雙精度型Double#8日期型Date無8公元100/1/1-99/12/31貨幣型Currency@8小數(shù)點型Decimal無14變體型Variant無以上任意類型,可變對象型Object無4第四節(jié)變量與常量1〕VBA允許使用未定義的變量,默認(rèn)是變體變量。2〕在模塊通用說明部份,參加OptionExplicit語句可以強(qiáng)迫用戶進(jìn)行變量定義。3〕變量定義語句及變量作用域Dim 變量as類型'定義為局部變量,如Dim xyzasintegerPrivate 變量as類型'定義為私有變量,如Private xyzasbytePublic 變量as類型'定義為公有變量,如Public xyzassingleGlobal 變量as類型'定義為全局變量,如Globlal xyzasdateStatic 變量as類型'定義為靜態(tài)變量,如Static xyzasdouble一般變量作用域的原那么是,那部份定義就在那部份起作用,模塊中定義那么在該模塊那作用。4〕常量為變量的一種特例,用Const定義,且定義時賦值,程序中不能改變值,作用域也如同變量作用域。如下定義:ConstPi=3.1415926assingle第五節(jié)數(shù)組數(shù)組是包含相同數(shù)據(jù)類型的一組變量的集合,對數(shù)組中的單個變量引用通過數(shù)組索引下標(biāo)進(jìn)行。在內(nèi)存中表現(xiàn)為一個連續(xù)的內(nèi)存塊,必須用Global或Dim語句來定義。定義規(guī)那么如下:Dim數(shù)組名([lowerto]upper[,[lowerto]upper,….])astype;Lower缺省值為0。二維數(shù)組是按行列排列,如XYZ(行,列)。除了以上固定數(shù)組外,VBA還有一種功能強(qiáng)大的動態(tài)數(shù)組,定義時無大小維數(shù)聲明;在程序中再利用Redim語句來重新改變數(shù)組大小,原來數(shù)組內(nèi)容可以通過加preserve關(guān)鍵字來保存。如下例:Dimarray1()asdouble:Redimarray1(5):array1(3)=250:Redimpreservearray1(5,10)第六節(jié)注釋和賦值語句1〕注釋語句是用來說明程序中某些語句的功能和作用;VBA中有兩種方法標(biāo)識為注釋語句。單引號’;如:’定義全局變量;可以位于別的語句之尾,也可單獨一行Rem;如:Rem定義全局變量;只能單獨一行2〕賦值語句是進(jìn)行對變量或?qū)ο髮傩再x值的語句,采用賦值號=,如X=123:Form1.caption=”我的窗口”對對象的賦值采用:setmyobject=object或myobject:=object第七節(jié)書寫標(biāo)準(zhǔn)1〕VBA不區(qū)分標(biāo)識符的字母大小寫,一律認(rèn)為是小寫字母;2〕一行可以書寫多條語句,各語句之間以冒號:分開;3〕一條語句可以多行書寫,以空格加下劃線_來標(biāo)識下行為續(xù)行;4〕標(biāo)識符最好能簡潔明了,不造成歧義。第八節(jié)判斷語句1〕If…Then…Else語句IfconditionThen[statements][Elseelsestatements]如1:IfA>BAndC<DThenA=B+2ElseA=C+2如2:Ifx>250Thenx=x-100或者,可以使用塊形式的語法:IfconditionThen[statements][ElseIfcondition-nThen[elseifstatements]...[Else[elsestatements]]EndIf如1:IfNumber<10ThenDigits=1ElseIfNumber<100ThenDigits=2ElseDigits=3EndIf2〕SelectCase…Case…EndCase語句如1:SelectCasePidCase“A101Price=200Case“A102Price=300……CaseElsePrice=900EndCase3〕Choose函數(shù)choose(index,choce-1,choice-2,…,choice-n),可以用來選擇自變量串列中的一個值,并將其返回,index必要參數(shù),數(shù)值表達(dá)式或字段,它的運(yùn)算結(jié)果是一個數(shù)值,且界于1和可選擇的工程數(shù)之間。choice必要參數(shù),Variant表達(dá)式,包含可選擇工程的其中之一。如:GetChoice=Choose(Ind,"Speedy","United","Federal")4〕Switch函數(shù)Switch(expr-1,value-1[,expr-2,value-2_[,expr-n,value-n]])switch函數(shù)和Choose函數(shù)類似,但它是以兩個一組的方式返回所要的值,在串列中,最先為TRUE的值會被返回。expr必要參數(shù),要加以計算的Variant表達(dá)式。value必要參數(shù)。如果相關(guān)的表達(dá)式為True,那么返回此局部的數(shù)值或表達(dá)式,沒有一個表達(dá)式為True,Switch會返回一個Null值。第九節(jié)循環(huán)語句1〕ForNext語句以指定次數(shù)來重復(fù)執(zhí)行一組語句Forcounter=startToend[Stepstep] 'step缺省值為1[statements][ExitFor][statements]Next[counter]如1:ForWords=10To1Step-1 '建立10次循環(huán)ForChars=0To9 '建立10次循環(huán)MyString=MyString&Chars '將數(shù)字添加到字符串中NextChars'IncrementcounterMyString=MyString&"" '添加一個空格NextWords2〕ForEach…Next語句主要功能是對一個數(shù)組或集合對象進(jìn)行,讓所有元素重復(fù)執(zhí)行一次語句ForEachelementIngroupStatements[Exitfor]StatementsNext[element]如1:ForEachrang2InWitherior.colorindex=6.pattern=xlSolidEndwithNext這上面一例中用到了With…EndWith語句,目的是省去對象屢次調(diào)用,加快速度;語法為:Withobject[statements]EndWith3〕Do…loop語句在條件為true時,重復(fù)執(zhí)行區(qū)塊命令Do{while|until}condition'while為當(dāng)型循環(huán),until為直到型循環(huán),顧名思義,不多說啦StatementsExitdoStatementsLoop或者使用下面語法Do '先do再判斷,即不管如何先干一次再說StatementsExitdoStatementsLoop{while|until}condition第十節(jié)其他類語句和錯誤語句處理一.其他循環(huán)語句結(jié)構(gòu)化程序使用以上判斷和循環(huán)語句已經(jīng)足夠,建議不要輕易使用下面的語句,雖然VBA還支持。Gotoline該語句為跳轉(zhuǎn)到line語句行Onexpressiongosubdestinatioinlist或者onexpressiongotodestinationlist語句為根據(jù)exprssion表達(dá)式值來跳轉(zhuǎn)到所要的行號或行標(biāo)記Gosubline…line…Return語句,Return返回到Gosubline行,如下例:Subgosubtry()DimnumNum=inputbox(“輸入一個數(shù)字,此值將會被判斷循環(huán)”)Ifnum>0thenGosubRoutine1:Debug.printnum:ExitsubRoutine1:Num=num/5ReturnEndsubwhile…wend語句,只要條件為TRUE,循環(huán)就執(zhí)行,這是以前VB老語法保存下來的,如下例:whilecondition‘whileI<50[statements] ‘I=I+1wend‘Wend二.錯誤語句處理執(zhí)行階段有時會有錯誤的情況發(fā)生,利用OnError語句來處理錯誤,啟動一個錯誤的處理程序。語法如下:OnErrorGotoLine‘當(dāng)錯誤發(fā)生時,會立刻轉(zhuǎn)移到line行去OnErrorResumeNext‘當(dāng)錯誤發(fā)生時,會立刻轉(zhuǎn)移到發(fā)生錯誤的下一行去OnErroGoto0‘當(dāng)錯誤發(fā)生時,會立刻停止過程中任何錯誤處理過程第十一節(jié)過程和函數(shù)過程是構(gòu)成程序的一個模塊,往往用來完成一個相對獨立的功能。過程可以使程序更清晰、更具結(jié)構(gòu)性。VBA具有四種過程:Sub過程、Function函數(shù)、Property屬性過程和Event事件過程。一.Sub過程Sub過程的參數(shù)有兩種傳遞方式:按值傳遞(ByVal)和按地址傳遞(ByRef)。如下例:Subpassword(ByValxasinteger,ByRefyasinteger)Ify=100theny=x+yelsey=x-yx=x+100EndsubSubcall_password()Dimx1asintegerDimy1asintegerx1=12y1=100Callpassword(x1,y1)‘調(diào)用過程方式:1.Call過程名(參數(shù)1,參數(shù)2…);2.過程名參數(shù)1,參數(shù)2…debug.printx1,y1‘結(jié)果是12、112,y1按地址傳遞改變了值,而x1按值傳遞,未改變原值Endsub二.Function函數(shù)函數(shù)實際是實現(xiàn)一種映射,它通過一定的映射規(guī)那么,完成運(yùn)算并返回結(jié)果。參數(shù)傳遞也兩種:按值傳遞(ByVal)和按地址傳遞(ByRef)。如下例:Functionpassword(ByValxasinteger,byrefyasinteger)asbooleanIfy=100theny=x+yelsey=x-yx=x+100ify=150thenpassword=trueelsepassword=falseEndFunctionSubcall_password()Dimx1asintegerDimy1asintegerx1=12y1=100ifpasswordthen‘調(diào)用函數(shù):1.作為一個表達(dá)式放在=右端;2.作為參數(shù)使用debug.printx1endifEndsub三.Property屬性過程和Event事件過程這是VB在對象功能上添加的兩個過程,與對象特征密切相關(guān),也是VBA比擬重要組成,技術(shù)比擬復(fù)雜,可以參考相關(guān)書籍。第十二節(jié)內(nèi)部函數(shù)在VBA程序語言中有許多內(nèi)置函數(shù),可以幫助程序代碼設(shè)計和減少代碼的編寫工作。一.測試函數(shù)IsNumeric(x) ‘是否為數(shù)字,返回Boolean結(jié)果,TrueorFalseIsDate(x) ‘是否是日期,返回Boolean結(jié)果,TrueorFalseIsEmpty〔x〕 ‘是否為Empty,返回Boolean結(jié)果,TrueorFalseIsArray(x)‘指出變量是否為一個數(shù)組。IsError(expression)‘指出表達(dá)式是否為一個錯誤值IsNull(expression)‘指出表達(dá)式是否不包含任何有效數(shù)據(jù)(Null)。IsObject(identifier)‘指出標(biāo)識符是否表示對象變量二.?dāng)?shù)學(xué)函數(shù)Sin(X)、Cos(X)、Tan(X)、Atan(x)三角函數(shù),單位為弧度Log(x)返回x的自然對數(shù)Exp(x)返回exAbs(x)返回絕對值Int(number)、Fix(number)都返回參數(shù)的整數(shù)局部,區(qū)別:Int將-8.4轉(zhuǎn)換成-9,而Fix將-8.4轉(zhuǎn)換成-8Sgn(number)返回一個Variant(Integer),指出參數(shù)的正負(fù)號Sqr(number)返回一個Double,指定參數(shù)的平方根VarType(varname)返回一個Integer,指出變量的子類型Rnd〔x〕返回0-1之間的單精度數(shù)據(jù),x為隨機(jī)種子三.字符串函數(shù)Trim(string) 去掉string左右兩端空白Ltrim(string) 去掉string左端空白Rtrim(string) 去掉string右端空白Len(string) 計算string長度Left(string,x) 取string左段x個字符組成的字符串Right(string,x) 取string右段x個字符組成的字符串Mid(string,start,x) 取string從start位開始的x個字符組成的字符串Ucase(string) 轉(zhuǎn)換為大寫Lcase(string) 轉(zhuǎn)換為小寫Space(x) 返回x個空白的字符串Asc(string) 返回一個integer,代表字符串中首字母的字符代碼Chr(charcode) 返回string,其中包含有與指定的字符代碼相關(guān)的字符四.轉(zhuǎn)換函數(shù)CBool(expression) 轉(zhuǎn)換為Boolean型CByte(expression) 轉(zhuǎn)換為Byte型CCur(expression) 轉(zhuǎn)換為Currency型CDate(expression) 轉(zhuǎn)換為Date型CDbl(expression) 轉(zhuǎn)換為Double型CDec(expression) 轉(zhuǎn)換為Decemal型CInt(expression) 轉(zhuǎn)換為Integer型CLng(expression) 轉(zhuǎn)換為Long型CSng(expression) 轉(zhuǎn)換為Single型CStr(expression) 轉(zhuǎn)換為String型CVar(expression) 轉(zhuǎn)換為Variant型Val(string) 轉(zhuǎn)換為數(shù)據(jù)型Str(number) 轉(zhuǎn)換為String五.時間函數(shù)Now 返回一個Variant(Date),根據(jù)計算機(jī)系統(tǒng)設(shè)置的日期和時間來指定日期和時間。Date 返回包含系統(tǒng)日期的Variant(Date)。Time 返回一個指明當(dāng)前系統(tǒng)時間的Variant(Date)。Timer 返回一個Single,代表從午夜開始到現(xiàn)在經(jīng)過的秒數(shù)。TimeSerial(hour,minute,second)返回一個Variant(Date),包含具有具體時、分、秒的時間。DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])返回Variant(Long)的值,表示兩個指定日期間的時間間隔數(shù)目Second(time)返回一個Variant(Integer),其值為0到59之間的整數(shù),表示一分鐘之中的某個秒Minute(time)返回一個Variant(Integer),其值為0到59之間的整數(shù),表示一小時中的某分鐘Hour(time)返回一個Variant(Integer),其值為0到23之間的整數(shù),表示一天之中的某一鐘點Day(date) 返回一個Variant(Integer),其值為1到31之間的整數(shù),表示一個月中的某一日Month(date)返回一個Variant(Integer),其值為1到12之間的整數(shù),表示一年中的某月Year(date) 返回Variant(Integer),包含表示年份的整數(shù)。Weekday(date,[firstdayofweek])返回一個Variant(Integer),包含一個整數(shù),代表某個日期是星期幾第十三節(jié)文件操作文件Dir[(pathname[,attributes])];pathname可選參數(shù),用來指定文件名的字符串表達(dá)式,可能包含目錄或文件夾、以及驅(qū)動器。如果沒有找到pathname,那么會返回零長度字符串("");attributes可選參數(shù)。常數(shù)或數(shù)值表達(dá)式,其總和用來指定文件屬性。如果省略,那么會返回匹配pathname但不包含屬性的文件。刪除Killpathname 從磁盤中刪除文件,pathname參數(shù)是用來指定一個文件名RmDirpathname 從磁盤中刪除刪除目錄,pathname參數(shù)是用來指定一個文件夾翻開OpenpathnameFormode[Accessaccess][lock]As[#]filenumber[Len=reclength]能夠?qū)ξ募斎?輸出(I/O)。pathname必要。字符串表達(dá)式,指定文件名,該文件名可能還包括目錄、文件夾及驅(qū)動器。mode必要。關(guān)鍵字,指定文件方式,有Append、Binary、Input、Output、或Random方式。如果未指定方式,那么以Random訪問方式翻開文件。access可選。關(guān)鍵字,說明翻開的文件可以進(jìn)行的操作,有Read、Write、或ReadWrite操作。lock可選。關(guān)鍵字,說明限定于其它進(jìn)程翻開的文件的操作,有Shared、LockRead、LockWrite、和LockReadWrite操作。filenumber必要。一個有效的文件號,范圍在1到511之間。使用FreeFile函數(shù)可得到下一個可用的文件號。reclength可選。小于或等于32,767〔字節(jié)〕的一個數(shù)。對于用隨機(jī)訪問方式翻開的文件,該值就是記錄長度。對于順序文件,該值就是緩沖字符數(shù)。說明對文件做任何I/O操作之前都必須先翻開文件。Open語句分配一個緩沖區(qū)供文件進(jìn)行I/O之用,并決定緩沖區(qū)所使用的訪問方式。如果pathname指定的文件不存在,那么,在用Append、Binary、Output、或Random方式翻開文件時,可以建立這一文件。如果文件已由其它進(jìn)程翻開,而且不允許指定的訪問類型,那么Open操作失敗,而且會有錯誤發(fā)生。如果mode是Binary方式,那么Len子句會被忽略掉。重要在Binary、Input和Random方式下可以用不同的文件號翻開同一文件,而不必先將該文件關(guān)閉。在Append和Output方式下,如果要用不同的文件號翻開同一文件,那么必須在翻開文件之前先關(guān)閉該文件。讀入Input#filenumber,varlist從已翻開的順序文件中讀出數(shù)據(jù)并將數(shù)據(jù)指定給變量Get[#]filenumber,[recnumber],varname將一個已翻開的磁盤文件讀入一個變量之中。寫入Write#filenumber,[outputlist]將數(shù)據(jù)寫入順序文件Print#filenumber,[outputlist]將格式化顯示的數(shù)據(jù)寫入順序文件中Put[#]filenumber,[recnumber],varname將一個變量的數(shù)據(jù)寫入磁盤文件中。關(guān)閉Close[filenumberlist]關(guān)閉Open語句所翻開的輸入/輸出(I/O)文件注意如果今后想用Input#語句讀出文件的數(shù)據(jù),就要用Write#語句而不用Print#語句將數(shù)據(jù)寫入文件。因為在使用Write#時,將數(shù)據(jù)域分界就可確保每個數(shù)據(jù)域的完整性,因此可用Input#再將數(shù)據(jù)讀出來。使用Write#還能確保任何地區(qū)的數(shù)據(jù)都被正確讀出。Write與Print#語句不同,當(dāng)要將數(shù)據(jù)寫入文件時,Write#語句會在工程和用來標(biāo)記字符串的引號之間插入逗號。Write#語句在將outputlist中的最后一個字符寫入文件后會插入一個新行字符,即回車換行符,(Chr(13)+Chr(10))。其他文件函數(shù)LOF(filenumber)返回一個Long,表示用Open語句翻開的文件的大小,該大小以字節(jié)為單位。EOF(filenumber)返回一個Integer,它包含Boolean值True,說明已經(jīng)到達(dá)為Random或順序Input翻開的文件的結(jié)尾。Loc(filenumber)返回一個Long,在已翻開的文件中指定當(dāng)前讀/寫位置Seek(filenumber)返回一個Long,在Open語句翻開的文件中指定當(dāng)前的讀/寫位二、VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)第一課VBA是什么1.1VBA是什么直到90年代早期,使應(yīng)用程序自動化還是充滿挑戰(zhàn)性的領(lǐng)域.對每個需要自動化的應(yīng)用程序,人們不得不學(xué)習(xí)一種不同的自動化語言.例如:可以用EXCEL的宏語言來使EXCEL自動化,使用WORDBASIC使WORD自動化,等等.微軟決定讓它開發(fā)出來的應(yīng)用程序共享一種通用的自動化語言VisualBasicForApplication(VBA),可以認(rèn)為VBA是非常流行的應(yīng)用程序開發(fā)語言VASUALBASIC的子集.實際上VBA是"寄生于"VB應(yīng)用程序的版本.VBA和VB的區(qū)別包括如下幾個方面:1.VB是設(shè)計用于創(chuàng)立標(biāo)準(zhǔn)的應(yīng)用程序,而VBA是使已有的應(yīng)用程序(EXCEL等)自動化2.VB具有自己的開發(fā)環(huán)境,而VBA必須寄生于已有的應(yīng)用程序.3.要運(yùn)行VB開發(fā)的應(yīng)用程序,用戶不必安裝VB,因為VB開發(fā)出的應(yīng)用程序是可執(zhí)行文件(*.EXE),而VBA開發(fā)的程序必須依賴于它的"父"應(yīng)用程序,例如EXCEL.盡管存在這些不同,VBA和VB在結(jié)構(gòu)上仍然十分相似.事實上,如果你已經(jīng)了解了VB,會發(fā)現(xiàn)學(xué)習(xí)VBA非常快.相應(yīng)的,學(xué)完VBA會給學(xué)習(xí)VB打下堅實的根底.而且,當(dāng)學(xué)會在EXCEL中用VBA創(chuàng)立解決方案后,即已具備在WORDACCESSOUTLOOKFOXPROPROWERPOINT中用VBA創(chuàng)立解決方案的大局部知識.*VBA一個關(guān)鍵特征是你所學(xué)的知識在微軟的一些產(chǎn)品中可以相互轉(zhuǎn)化.*VBA可以稱作EXCEL的"遙控器".VBA究竟是什么?更確切地講,它是一種自動化語言,它可以使常用的程序自動化,可以創(chuàng)立自定義的解決方案.此外,如果你愿意,還可以將EXCEL用做開發(fā)平臺實現(xiàn)應(yīng)用程序.1.2EXCEL環(huán)境中基于應(yīng)用程序自動化的優(yōu)點也許你想知道VBA可以干什么?使用VBA可以實現(xiàn)的功能包括:1.使重復(fù)的任務(wù)自動化.2.自定義EXCEL工具欄,菜單和界面.3.簡化模板的使用.4.自定義EXCEL,使其成為開發(fā)平臺.5.創(chuàng)立報表.6.對數(shù)據(jù)進(jìn)行復(fù)雜的操作和分析.用EXCEL作為開發(fā)平臺有如下原因:1.EXCEL本身功能強(qiáng)大,包括打印,文件處理,格式化和文本編輯.2.EXCEL內(nèi)置大量函數(shù).3.EXCEL界面熟悉.4.可連接到多種數(shù)據(jù)庫.用其他語言開發(fā)應(yīng)用程序,一半的工作是編寫一些根本功能的模塊,包括文件的翻開和保存,打印,復(fù)制等.而用EXCEL作為開發(fā)平臺,那么由于EXCEL已經(jīng)具備這些根本功能,你要做的只是使用它.1.3錄制簡單的宏在介紹學(xué)習(xí)VBA之前,應(yīng)該花幾分鐘錄制一個宏。新術(shù)語:"宏",指一系列EXCEL能夠執(zhí)行的VBA語句。以下將要錄制的宏非常簡單,只是改變單元格顏色。請完成如下步驟:1)翻開新工作簿,確認(rèn)其他工作簿已經(jīng)關(guān)閉。2)選擇A1單元格。調(diào)出"常用"工具欄。3)選擇"工具"-"宏"-"錄制新宏"。4)輸入"改變顏色"作為宏名替換默認(rèn)宏名,單擊確定,注意,此時狀態(tài)欄中顯示"錄制",特別是"停止錄制"工具欄也顯示出來。替換默認(rèn)宏名主要是便于分別這些宏?!锖昝疃嗫蔀?55個字符,并且必須以字母開始。其中可用的字符包括:字母、數(shù)字和下劃線。宏名中不允許出現(xiàn)空格。通常用下劃線代表空格。5)選擇"格式"的"單元格",選擇"圖案"選項中的紅色,單擊"確定"。6)單擊"停止錄制"工具欄按鈕,結(jié)束宏錄制過程?!绻?停止錄制"工具欄開始并未出現(xiàn),請選擇"工具"-"宏"-"停止錄制"。錄制完一個宏后就可以執(zhí)行它了。1.4執(zhí)行宏當(dāng)執(zhí)行一個宏時,EXCEL按照宏語句執(zhí)行的情況就像VBA代碼在對EXCEL進(jìn)行"遙控"。但VBA的"遙控"不僅能使操作變得簡便,還能使你獲得一些使用EXCEL標(biāo)準(zhǔn)命令所無法實現(xiàn)的功能。而且,一旦熟悉了EXCEL的"遙控",你都會奇怪自己在沒有這些"遙控"的情況下,到底是怎么熬過來的。要執(zhí)行剛剛錄制的宏,可以按以下步驟進(jìn)行:1〕選擇任何一個單元格,比方A3。2〕選擇"工具"-"宏"-"宏",顯示"宏"對話框。3〕選擇"改變顏色",選擇"執(zhí)行",那么A3單元格的顏色變?yōu)榧t色。試著選擇其它單元格和幾個單元格組成的區(qū)域,然后再執(zhí)行宏,以便加深印象。1.5查看錄制的代碼到底是什么在控制EXCEL的運(yùn)行呢?你可能有些疑惑.好,讓我們看看VBA的語句吧.1〕選擇"工具"-"宏"-"宏",顯示"宏"對話框。2〕單擊列表中的"改變顏色",選擇"編輯"按鈕。此時,會翻開VBA的編輯器窗口〔VBE〕。關(guān)于該編輯器,以后再詳細(xì)說明,先將注意力集中到顯示的代碼上。代碼如下:〔日期和姓名會有不同〕Sub改變顏色()''改變顏色Macro'xw記錄的宏2000-6-10''WithSelection.Interior.ColorIndex=3.Pattern=xlSolid.PatternColorIndex=xlAutomaticEndWithEndSub將來會十分熟悉這種代碼,雖然現(xiàn)在它們看上去像一種奇怪的外語。學(xué)習(xí)VBA或編程語言在某種程度上比擬像在學(xué)習(xí)一種外語。Sub改變顏色():這是宏的名稱。中間的以"'"開頭的五行稱為"注釋",它在錄制宏時自動產(chǎn)生。以With開頭到EndWith結(jié)束的結(jié)構(gòu)是With結(jié)構(gòu)語句,這段語句是宏的主要局部。注意單詞"selection",它代表"突出顯示的區(qū)域"〔即:選定區(qū)域〕。WithSelection.Interior:它讀作"選擇區(qū)域的的內(nèi)部".這整段語句設(shè)置該區(qū)域內(nèi)部的一些"屬性"。其中:.ColorIndex=3:將該內(nèi)部設(shè)為紅色。注意:有一小圓點,它的作用在于簡化語句,小圓點代替出現(xiàn)在With后的詞,它是With結(jié)構(gòu)的一局部。另外:紅色被數(shù)字化為3.(紅色警戒是否可稱作:3號警戒,嗯?)有興趣的話,你將3改為其他數(shù)字試試看。.Pattern=xlSolid:設(shè)置該區(qū)域的內(nèi)部圖案。由于是錄制宏,所以,雖然你并未設(shè)置這一項,宏仍然將其記錄下來(因為在"圖案"選項中有此一項,只是你為曾設(shè)置而已〕。xlSolid表示純色。.PatternColorIndex=xlAutomatic:表示內(nèi)部圖案底紋顏色為自動配色。EndWith:結(jié)束With語句。EndSub:整個宏的結(jié)束語1.6編輯錄制的代碼在上一節(jié),我們錄制了一個宏并查看了代碼,代碼中有兩句實際上并不起作用。哪兩句?現(xiàn)在,在宏中作一個修改,刪除多余行,直到和下面代碼相同:Sub改變顏色()''改變顏色Macro'xw記錄的宏2000-6-10''WithSelection.Interior.ColorIndex=3EndWithEndSub完成后,在工作表中試驗一下。你會發(fā)現(xiàn)結(jié)果和修改前的狀況一樣。在With語句前參加一行:Range("A5").Select試著運(yùn)行該宏,那么無論開始選擇哪個單元格,宏運(yùn)行結(jié)果都是使A5單元格變紅.現(xiàn)在可以看到,編輯錄制的宏同樣非常簡單。需要編輯宏是因為以下三個方面的原因。一:在錄制中出錯而不得不修改。二:錄制的宏中有多余的語句需要刪除,提高宏的運(yùn)行速度。三:希望增加宏的功能。比方:參加判斷或循環(huán)等無法錄制的語句。1.7錄制宏的局限性希望自動化的許多EXCEL過程大多都可以用錄制宏來完成.但是宏記錄器存在以下局限性.通過宏記錄器無法完成的工作有:1)錄制的宏無判斷或循環(huán)能力.2)人機(jī)交互能力差,即用戶無法進(jìn)行輸入,計算機(jī)無法給出提示.3)無法顯示EXCEL對話框.4)無法顯示自定義窗體.1.8小結(jié)本課中,你已經(jīng)掌握了VBA的一些根底知識,你會錄制宏、編輯宏而且了解了錄制宏的局限性.你很努力.并且已經(jīng)為將來學(xué)習(xí)VBA甚至VB等編程語言打下了根底.關(guān)鍵是你已經(jīng)了解了一個謎底,就是說,你了解了什么是編程.下面是些小練習(xí),做完后才可以去玩喲.思考:1)VBA只能用于EXCEL嗎?2)VBA是基于哪種語言?3)說說EXCEL和VBA的關(guān)系.4)為什么要用宏?第二課處理錄制的宏2.1為宏指定快捷鍵你也許希望為經(jīng)常使用的宏指定快捷鍵??旖萱I是指鍵的組合,當(dāng)其按下時執(zhí)行一條命令。例如:CTRL+C在許多程序中代表"復(fù)制"命令。當(dāng)給宏指定了快捷鍵后,就可以用快捷鍵來執(zhí)行宏,而不必通過"工具"菜單。注意:當(dāng)包含宏的工作簿翻開時間,為宏指定快捷鍵會覆蓋EXCEL默認(rèn)的快捷鍵。例如:把CTRL+C指定給某個宏,那么CTRL+C就不再執(zhí)行復(fù)制命令。用以下方法可以打印出EXCEL的快捷鍵清單〔用A4紙打印共有24頁之多〕:1〕翻開EXCEL幫助文件并選擇"目錄"選項。2〕從"使用快捷鍵"文件夾中選擇""快捷鍵"標(biāo)題。3〕右擊該標(biāo)題,從快捷菜單中選擇"打印"。4〕選擇"打印所選標(biāo)題和所有子主題",單擊"確定"。可以在創(chuàng)立宏時指定快捷鍵,也可以在創(chuàng)立后再指定。要在創(chuàng)立〔錄制〕宏時指定快捷鍵,只須在錄制宏時在輸入宏名后,在"快捷鍵"文本框中輸入相應(yīng)的鍵。錄制宏后指定快捷鍵也很簡單,只需選擇"工具""宏",顯示"宏"對話框,選擇要指定快捷鍵的宏,再單擊"選項"按鈕,通過"選項"對話框進(jìn)行設(shè)置。2.2決定宏保存的位置宏可保存在三種可能的位置:1〕當(dāng)前工作簿?!仓挥性摴ぷ鞑痉_時,該宏才可用。〕2〕新工作簿。3〕個人宏工作簿。2.3個人宏工作簿個人宏工作簿,是為宏而設(shè)計的一種特殊的具有自動隱藏特性的工作簿。第一次將宏創(chuàng)立到個人宏工作簿時,會創(chuàng)立名為"PERSONAL.XLS"的新文件。如果該文件存在,那么每當(dāng)EXCEL啟動時會自動將此文件翻開并隱藏在活開工作簿后面〔在"窗口"菜單中選擇"取消隱藏"后,可以很方便地發(fā)現(xiàn)它的存在?!橙绻阋屇硞€宏在多個工作簿都能使用,那么就應(yīng)當(dāng)創(chuàng)立個人宏工作簿,并將宏保存于其中。個人宏工作簿保存在"XLSTART"文件夾中。具體路徑為:C:\WINDOWS\Profiles\ApplicationData\Microsoft\Excel\XLSTART。可以以單詞"XLSTART"查詢。注意:如果存在個人宏工作簿,那么每當(dāng)EXCEL啟動時會自動將此文件翻開并隱藏。因為它存放在XLSTART文件夾內(nèi)。保存宏到個人宏工作簿本練習(xí),將保存一個簡單的宏到個人宏工作簿,該宏為文本加下劃線并改為斜體,步驟如下:1)建立一個名為"HOUR2"的工作簿,選擇"工具"-"宏"-"錄制新宏",顯示"錄制新宏"對話框.2)輸入"格式化文本"作為宏名.3)從"保存在"下拉框中選擇"個人宏工作簿".4)單擊"確定"按鈕.現(xiàn)在進(jìn)入錄制模式.5)單擊"斜體"工具欄按鈕.一段時間內(nèi),鼠標(biāo)出現(xiàn)沙漏,特別是在第一次創(chuàng)立個人宏工作簿時,因為EXCEL在創(chuàng)立該工作簿.6)單擊"下劃線"按鈕.7)停止錄制.使用并編輯個人宏工作簿中的宏剛剛已經(jīng)保存了一個宏到個人宏工作簿,現(xiàn)在可以在任何工作簿中使用該宏.可按如下步驟操作:1)關(guān)閉所有EXCEL工作簿.2)任意翻開一個EXCEL文件.(EXCEL自動將個人宏工作簿同時翻開并隱藏.)3)在A3中輸入你的名字.4)選擇"工具"-"宏",顯示宏對話框.現(xiàn)在可以在宏列表中看到"格式化文本"這個宏.5)選擇"格式化文本"宏,并執(zhí)行.現(xiàn)在A3單元格中,你的名字變?yōu)樾斌w字還帶有下劃線.選擇"窗口"-"取消隱藏",可以將PERSONAL.XLS顯示出來,其中沒有任何文字,但通過VBA編輯器可以在其中的模塊中找到"格式化文本"這個宏.在VBA編輯器中可以對該宏進(jìn)行直接編輯或者刪除.如果PERSONAL.XLS中一個宏都沒有,在啟動EXCEL時仍會翻開PERSONAL.XLS,這也許是EXCEL存在的一個小毛病.2.4將宏指定給按鈕即使通過快捷鍵可以是宏的執(zhí)行變快,但是一旦宏的數(shù)量多了也難于記憶,而且,如果宏是由其他人來使用,難道你要他們也記住那么多的快捷鍵嗎?作為EXCEL開發(fā)者,一個主要的目標(biāo)是為自動化提供一個易于操作的界面."按鈕"是最常見的界面組成元素之一.通過使用"窗體"工具欄,可以為工作簿中的工作表添加按鈕。在創(chuàng)立完一個按鈕后,可以為它指定宏,然后你的用戶就可以通過單擊按鈕來執(zhí)行宏。在本練習(xí)中,將創(chuàng)立一個按鈕,并為它指定一個宏,然后用該按鈕來執(zhí)行宏。具體步驟如下:1〕翻開"HOUR2"工作簿。2〕調(diào)出"窗體"工具欄。3〕單擊"窗體"工具欄中的"按鈕"控件,此時鼠標(biāo)變成十字形狀。4〕在希望放置按鈕的位置按下鼠標(biāo)左鍵,拖動鼠標(biāo)畫出一個矩形,這個矩形代表了該按鈕的大小。對大小滿意后放開鼠標(biāo)左鍵,這樣一個命令按鈕就添加到了工作表中,同時EXCEL自動顯示"指定宏"對話框。5〕從"指定宏"對話框中選擇"格式化文本",單擊"確定"。這樣,就把該宏指定給命令按鈕。6〕在按鈕的標(biāo)題"按鈕1"前單擊鼠標(biāo)左鍵,按下DELETE直到刪除所有文本,輸入"格式化"作為標(biāo)題。7〕單擊按鈕外的任意位置,現(xiàn)在該按鈕的標(biāo)題由默認(rèn)的"按鈕1"變?yōu)?格式化"而且被指定了一個宏。8〕試著在某個單元格中輸入文本,單擊按鈕運(yùn)行該宏。當(dāng)鼠標(biāo)移動至該按鈕時自動變成手的形狀,如果要改變其大小或標(biāo)題,只需用右鍵單擊該按鈕就可以進(jìn)行修改和設(shè)置。很明顯,你再也不需記住宏的名字或快捷鍵了,只需按一下按鈕。2.5將宏指定給圖片或其他對象要執(zhí)行宏有多種方法可以選擇,可以將宏指定給按鈕等控件,還可以指定給圖片、自定義工具欄、窗體甚至可以將宏指定給某個"事件",比方單擊工作表,雙擊工作表,激活工作表,翻開工作簿等等,"事件"是一個重要的概念,除此而外"方法""對象"都是將來你會經(jīng)常接觸到的?,F(xiàn)在它們看來十分抽象,但是將來你會很熟悉這些詞語。指定宏到圖片十分簡單,只需單擊某個圖片,單擊快捷菜單中的"指定宏"進(jìn)行設(shè)置即可。如果不希望在工作表上添加控件或圖片執(zhí)行宏,還有一種方法可以選擇:將宏指定給"工具欄按鈕",可按如下步驟進(jìn)行:1〕翻開"HOUR2"工作簿,選擇"工具"-"定義",顯示"自定義工具欄"對話框。2〕從"類別"列表框中選擇"宏",從"命令"列表框中選擇"自定義按鈕"。3〕將"自定義按鈕"拖動到工具欄。4〕右鍵單擊該按鈕,選擇"指定宏",顯示"指定宏"對話框。5〕選擇"格式化文本"并確定。6〕單擊"關(guān)閉"按鈕,關(guān)閉"自定義工具欄"對話框。7〕試著在某個單元格中輸入文本,單擊工具欄按鈕運(yùn)行該宏。2.6小結(jié)小結(jié)與思考:宏存放于三個可能的位置。個人宏工作簿存放的位置和特性。執(zhí)行宏的方式。指定宏是為某個對象的事件指定一個程序,一旦這個對象以該事件激活,系統(tǒng)將運(yùn)行指定的程序。常用的對象有:workbook,worksheet,range,cells,圖表,圖片,數(shù)據(jù)透視表,控件,窗體,工具欄.每一個對象都有其可以響應(yīng)的特殊事件〔也有一些通用事件如單擊或雙擊等〕。如有興趣,可以通過EXCEL幫助文件查詢這幾個詞條。在EXCEL中看到的幾乎都是屬于某個對象,而在EXCEL中所做的許多工作,如移動一下鼠標(biāo)等等,都可能觸發(fā)了一個事件。下一學(xué)時我們將共同學(xué)習(xí)"控件"。第三課學(xué)習(xí)控件3.1EXCEL開發(fā)過程簡介需要對以下問題有個大致的概念.1)誰使用這決定了程序的操作難度及界面感觀.2)數(shù)據(jù)來源和保存在哪里這決定了程序的結(jié)構(gòu).3)如何操作這將決定程序的界面和細(xì)節(jié).4)數(shù)據(jù)處理的結(jié)果最終決定程序的價值.3.2認(rèn)識不同的控件開始時請關(guān)閉所有工作簿,翻開一個新工作簿并另存為"HOUR3".在工具欄上單擊鼠標(biāo)右鍵,從快捷菜單中選擇"窗體",顯示"窗體"工具欄.其中有16個控件,只有9個可放到工作表內(nèi)。1〕標(biāo)簽:它用于表現(xiàn)靜態(tài)文本。2〕分組框:它用于將其他控件進(jìn)行組合。3〕按鈕:用于執(zhí)行宏命令。4〕復(fù)選框:它是一個選擇控件,通過單擊可以選擇和取消選擇,可以多項選擇。5〕選項按鈕:通常幾個選項按鈕組合在一起使用,在一組中只能選擇一個選項按鈕。6〕列表框:用于顯示多個選項并從中選擇。只能單項選擇。7〕組合框:用于顯示多個選項并從中選擇。可以選擇其中的工程或者輸入一個其它值。8〕滾動條:不是你常見的來給很長的窗體添加滾動能力的控件,而是一種選擇機(jī)制。例如調(diào)節(jié)過渡色的滾動條控件。包括水平滾動條和垂直滾動條。9〕微調(diào)控件:也是一種數(shù)值選擇機(jī)制,通過單擊控件的箭頭來選擇數(shù)值。例如改變Windows日期或時間就會使用到微調(diào)控件。3.3向工作表添加控件用EXCEL設(shè)計界面十分簡單,要將控件添加到工作表上,可以按以下步驟操作:1)創(chuàng)立新工作簿并另存為"HOUR3",顯示"窗體"工具欄.2)選擇"標(biāo)簽"控件.3)將鼠標(biāo)定位到E1,此時鼠標(biāo)變成小十字.4)按下左鍵,拖動大約四個單元格長度,放開鼠標(biāo)左鍵.如果希望控件大小易于控制,可在創(chuàng)立該控件時按下ALT拖動.5)在標(biāo)簽1上單擊右鍵,選擇"編輯文字",現(xiàn)在可以輸入文字.完成后,單擊任何單元格退出文字編輯.6)通過以上步驟可以添加其它控件到工作表中,不再贅述.3.4設(shè)置控件的特性設(shè)置控件的特性,可以按以下步驟操作:1)選中先前創(chuàng)立的復(fù)選框控件,如果沒有馬上創(chuàng)立一個.2)右擊該控件,選擇"控制"選項卡.3)在"單元格鏈接"中輸入A1并確定.4)單擊任意單元格,退出設(shè)置.5)用鼠標(biāo)左鍵單擊復(fù)選框,A1出現(xiàn)TRUE,這意味著該控件被選中.再次單擊該控件,A1出現(xiàn)FALSE.6)選擇剛剛創(chuàng)立的滾動條控件.并調(diào)出"設(shè)置控件格式"對話框.7)在"單元格鏈接"中輸入A3并確定.8)在滾動條外任意單元格單擊鼠標(biāo)左鍵,使?jié)L動條不被選擇.9)用鼠標(biāo)單擊滾動條上的箭頭,那么A1的數(shù)值增加1,繼續(xù)單擊那么A1的數(shù)值繼續(xù)增加.10)保存并關(guān)閉該工作簿.3.5給控件命名當(dāng)創(chuàng)立一個控件時EXCEL會自動給它指定一個名字,但不便于理解和記憶,為控件取名的方法根本和給單元格或區(qū)域取名的方法相同.選中某個控件,再在位于公式欄上的"名字"編輯框輸入控件名字.這樣就給控件更改了名字.3.6使用用戶窗體如果希望創(chuàng)立專業(yè)級的應(yīng)用程序,并且方便用戶輸入數(shù)據(jù),那么應(yīng)該使用用戶窗體.用戶窗體可以作為程序的對話框和窗口.向用戶窗體添加控件根本類似于向工作表添加控件,然而第一步要創(chuàng)立一個用戶窗體.這可以通過VBA編輯器實現(xiàn).具體按以下步驟操作:1)翻開"HOUR3"工作簿,選擇"工具"-"宏"-"VBA編輯器",翻開VBA編輯器.2)在VBA編輯器中選擇工具欄上的"插入用戶窗體"按鈕或者選擇"插入"菜單,從下拉菜單中選擇"用戶窗體"現(xiàn)在,VBA編輯器中出現(xiàn)一個名為"USERFORM1"的窗體,"控件工具箱"同時出現(xiàn),在其中有許多已經(jīng)熟悉的控件,另外還有一些新的控件.這些新的控件是:A)切換按鈕:該控件如果被選中,那么會保持被按下的狀態(tài).如果再次單擊它就恢復(fù)為沒有按下的狀態(tài).EXCEL工具欄中有幾個這樣的按鈕,例如:"全屏顯示","加粗","下劃線"以及"窗體"工具欄中的"切換網(wǎng)格"等.B)選項卡條(TabStrip):它是包含多個選項卡的控件.通常用來對相關(guān)的信息進(jìn)行組織或分類.例如:你也許希望用選項卡條來顯示各個地區(qū)的銷售信息,可以給每個地區(qū)設(shè)置一個選項卡.在默認(rèn)時,選項卡包含兩頁,分別叫做TAB1和TAB2,可以添加更多的選項卡.C)多頁:外觀類似選項卡條,是包含一頁或多頁的控件.選項卡條給人相似的外觀,而多頁控件的各頁包含各自不同的控件,有各自不同的布局.多頁的例子很多,例如:"設(shè)置控件格式"對話框和"工具"菜單中的"選項"對話框.以及"格式"菜單中的"單元格..."對話框.D)圖像控件:它允許向窗體上放置圖片.圖片格式須為:*.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf.F)RefEdit:這是工具箱中默認(rèn)情況下的最后一個控件。它外觀象文本框,通過這個控件可以將用戶窗體折疊起來,以便選擇單元格區(qū)域。還記得在使用fx"粘貼函數(shù)"時的情況嗎?通過實踐,我們會逐漸掌握每個控件的特性,這確實需要花時間,但不必死記硬背。在對用戶窗體設(shè)計得滿意時,可以對其進(jìn)行預(yù)覽,方法是在VBA編輯器中選擇該窗體,單擊"運(yùn)行"菜單中的三角符號"運(yùn)行子過程/用戶窗體",三角符號在VBA工具欄上也可能看得到,旁邊是一個垂直的等于符號,最右邊是個小正方形符號,它們類似于錄音機(jī)上的按鈕。運(yùn)行窗體的另一個方法是按F5鍵。小結(jié):學(xué)習(xí)完本學(xué)時后,我們具備了用于程序界面設(shè)計的根本知識。我們對控件不在感到陌生,也明白如何向工作表和窗體添加控件,但控件的內(nèi)容很多,需要邊用邊理解.此后,我們將從界面轉(zhuǎn)移到學(xué)習(xí)編寫代碼,并最終將二者融合。讓我們準(zhǔn)備好學(xué)習(xí)編程吧!3.7疑難解答問題1.怎樣決定控件的位置?如何選擇添加到工作表還是添加到用戶窗體?解答:這完全取決于個人的愛好和應(yīng)用程序的用戶.如果用戶對EXCEL非常熟悉,那么他們也許更希望以工作表的方式操作.在這種情況下不妨直接在工作表上創(chuàng)立控件;如果你的用戶對EXCEL不熟悉或者你需要給用戶一個專業(yè)的界面感覺,那么應(yīng)該使用用戶窗體.問題2.什么情況下該用選項卡條而不是多頁控件?解答:如果每一頁具有相同布局,那么應(yīng)選擇選項卡條,否那么應(yīng)該選擇多頁.本節(jié)作業(yè)1.思考:1〕列舉兩種可以讓用戶進(jìn)行多項選擇一的控件。2〕如何將控件與單元格鏈接起來。2.判斷:1〕只有在VBA編輯器中才能添加用戶窗體。2〕在VBA編輯器中看到的窗體網(wǎng)格線在運(yùn)行時會自動顯示。3.填空:()是顯示靜態(tài)文本的控件。第四課理解變量和變量的作用4.1代碼存在的位置:模塊VBA代碼必須存放在某個位置,這個地方就是模塊。有兩種根本類型的模塊:標(biāo)準(zhǔn)模塊和類模塊。模塊中的每個過程或者是函數(shù)過程,或者是子程序概念.本課的最后局部將討論函數(shù)過程和子程序的區(qū)別。新術(shù)語:模塊:它是作為一個單元保存在一起的VBA定義和過程的集合。類模塊:VBA允許你創(chuàng)立自己的對象,對象的定義包含在類模塊中。你的大局部工作集中在標(biāo)準(zhǔn)模塊中〔簡稱為模塊〕當(dāng)錄制宏時如果不存在模塊,EXCEL自動創(chuàng)立一個。EXCEL和VBA不關(guān)心代碼存放在哪一個模塊中,只要代碼存在于翻開的工作簿中即可。4.2對模塊的概覽過程被定義為VBA代碼的一個單元,過程中包括一系列用于執(zhí)行某個任務(wù)或是進(jìn)行某種計算的語句。工作簿的每個過程都有唯一的名字加以區(qū)分。有兩種不同的過程:子程序和函數(shù)過程。子程序只執(zhí)行一個或多個操作,而不返回數(shù)值。當(dāng)錄制完宏查看代碼時,所看到的就是子程序。宏只能錄制子程序,而不能錄制函數(shù)過程。一個子程序的例子如清單4-1所示。程序清單4-1子程序的例子SubcmdSmallFont_Click()WithSelection.Font.Name="Arial".FontStyle="Regular".Size=16EndWithEndsub上面列出的過程實際上是一個事件過程。通過它的名字,就可以知道這是一個事件過程。這個過程的名字是由一個對象的名字CmdSmallFont和一個事件的名字Click組成的,兩者之間用下劃線分開。如果還不明白,可以告訴你,CmdSmallFont是一個命令按鈕的名字。也就是說,當(dāng)單擊這個命令按鈕時,就會運(yùn)行這個事件過程。函數(shù)過程通常情況下稱為函數(shù),要返回一個數(shù)值。這個數(shù)值通常是計算的結(jié)果或是測試的結(jié)果,例如False或True.正如前面所說,可以用VBA創(chuàng)立自定義函數(shù)。實際上可以在工作表上使用你創(chuàng)立的函數(shù)。程序清單4-2是一個計算價格的10%為運(yùn)費的簡單例子。程序清單4-2簡單的用戶定義函數(shù)例如。PublicFunctionShipping(Price)Shipping=Price*0.1EndFunction請注意,這個函數(shù)使用一個參數(shù)〔Price).子程序和函數(shù)都可以使用參數(shù)。不管Price的值是多少,它都將決定運(yùn)費額。Price可以是數(shù)字和單元格引用。函數(shù)返回計算出來的運(yùn)費,這個函數(shù)可以用在單元格中。AB1Price1002Shipping=shipping(B1)創(chuàng)立過程創(chuàng)立第一個過程需要兩個根本步驟。首先,需要向工作簿中添加一個模塊。接著需要向模塊中添加一個工程。對于創(chuàng)立的每一個應(yīng)用程序,只需添加一次模塊??梢允褂枚鄠€模塊,但這是不必要的。某些開發(fā)者喜歡使用多個模塊,以便根據(jù)他們的目的或者窗體對過程進(jìn)行組織。在本練習(xí)中,創(chuàng)立的過程只顯示一個消息框。在本練習(xí)中創(chuàng)立的過程只顯示一個消息框。在本練習(xí)中使用Msgbox是為了提供一個可見的例子,雖然我們還沒有介紹過Msgbox語句,但是在本例中將使用它。要創(chuàng)立該過程,請按如下步驟進(jìn)行:1〕翻開一個新工作簿。2〕選擇"工具"-"宏"-"VisualBasic編輯器",翻開VBA編輯器窗口。3〕在`VBA編輯器的左面,可以看到"工程資源管理器"窗口。在工程資源管理器窗口的"Thisworkbook"上單擊鼠標(biāo)右鍵,選擇"插入"-"模塊",這樣就將一個模塊添加到應(yīng)用程序中了。(如果你沒有看見"工程資源管理器"窗口,可以按Ctrl+R)4〕選擇"插入""過程",顯示"添加過程"對話框。5〕輸入"第一個工程"作為過程名字。在"類型"分組框中,確認(rèn)選擇了"子程序"。單擊"確定"按鈕。這樣一個新的過程就添加到模塊中了??梢栽谀K中看到以PublicSub第一個過程〔〕開始,以EndSub結(jié)束的語句結(jié)構(gòu)。6〕在過程中插入光標(biāo),輸入以下語句并回車:Msgbox"這是我的第一個過程"在輸入Msgbox后,會自動彈出一個消息框告訴你有關(guān)這條命令的信息,稱之為自動列表技術(shù)。輸入完成的過程如下所示:PublicSub第一個過程〔〕Msgbox"這是我的第一個過程"EndSubVBA對子程序和函數(shù)有如下的命名規(guī)那么:*名字中可以包含字母數(shù)字和下劃線。*名字中不能包含空格句號驚嘆號,也不能包含字符@&$#.*名字最多可以包含255個字符。運(yùn)行宏創(chuàng)立這個過程后,可以運(yùn)行一下。運(yùn)行一個過程有幾種方法:可以直接使用"運(yùn)行"菜單,"運(yùn)行子程序/用戶窗體"工具欄按鈕或按下F5鍵。要運(yùn)行一個過程,可以按照如下步驟:1〕單擊"運(yùn)行子程序/用戶窗體"工具欄按鈕,過程執(zhí)行并顯示一個消息框。2〕單擊消息框之中的"確定"按鈕,關(guān)閉該消息框。4.3保存對模塊所做的改變要保存新過程,需要保存過程所駐留的工作簿.可以用VBA編輯器保存工作簿.具體步驟如下:1)選擇"文件"-"保存工作簿".因為本工作簿還沒有保存過,所以要給它命名.2)輸入"HOUR4"作為文件名并按回車鍵,那么工作簿和模塊與過程都保存下來了.第四課理解變量和變量的作用ExcelHome4.4變量變量是用于臨時保存數(shù)值的地方.每次應(yīng)用程序運(yùn)行時,變量可能包含不同的數(shù)值,而在程序運(yùn)行時,變量的數(shù)值可以改變.為了說明為什么需要變量,可以按照如下步驟創(chuàng)立一個簡單的過程:1)創(chuàng)立一個名為"你叫什么名字"的過程.2)在過程中輸入如下代碼:Inputbox"輸入你的名字:"現(xiàn)在不要擔(dān)憂inputbox語句的語法,將在第六學(xué)時中了解到有關(guān)這條命令的更多信息.3)按下F5鍵運(yùn)行過程,這時會顯示一個輸入框,要求輸入你的名字.4)輸入你的名字并按"確定"按鈕,那么結(jié)束該過程.你輸入的名字到那里去了?如何找到用戶在輸入框中輸入的信息?在這種情況下,需要使用變量來存儲用戶輸入的結(jié)果.變量的數(shù)據(jù)類型使用變量的第一步是了解變量的數(shù)據(jù)類型.變量的數(shù)據(jù)類型控制變量允許保存何種類型的數(shù)據(jù).表4-1列出了VBA支持的數(shù)據(jù)類型,還列出了各種類型的變量所需要的存儲空間和能夠存儲的數(shù)值范圍.數(shù)據(jù)類型存儲空間數(shù)值范圍Byte1字節(jié)0-255Booleam2字節(jié)True或者FalseInteger2字節(jié)-32768-32767Long(長整型)4字節(jié)-2147483648-2147483647Single4字節(jié)負(fù)值范圍:-3.402823E38--1.401298E-45正值范圍:1.401298E-45-3.402823E38Double8字節(jié)負(fù)值范圍:-1.79769313486232E308--494065645841247E-324正值范圍:4.94065645841247E-324-1.79769313486232E308Currency8字節(jié)-922337203685477-922337203685477Decimal14字節(jié)Date8字節(jié)1000年1月1日-9999年12月31日Object4字節(jié)任何引用對象String(長字符串〕10字節(jié)+1字節(jié)/字符0-約20億String(固定長度〕字符串的長度1-約65400Varient〔數(shù)字〕16字節(jié)Double范圍內(nèi)的任何數(shù)值Varient〔文本〕22字節(jié)+1字節(jié)/字符數(shù)據(jù)范圍和變長字符串相同表4-1VBA數(shù)據(jù)類型作為ABV程序員,一個目標(biāo)是選擇需要存儲空間盡量小的數(shù)據(jù)類型來保存所需要的數(shù)據(jù),這正是表4-1提供各種數(shù)據(jù)類型存儲空間的原因。例如,要保存諸如班級學(xué)生總數(shù)這樣的小數(shù)字,那么Byte數(shù)據(jù)類型就足夠了。在這種情況下,使用Single數(shù)據(jù)類型只是對計算機(jī)存儲空間的浪費。用Dim語句創(chuàng)立變量(聲明變量)

溫馨提示

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

評論

0/150

提交評論