ExcelVBA程序設(shè)計 太詳細(xì)了_第1頁
ExcelVBA程序設(shè)計 太詳細(xì)了_第2頁
ExcelVBA程序設(shè)計 太詳細(xì)了_第3頁
ExcelVBA程序設(shè)計 太詳細(xì)了_第4頁
ExcelVBA程序設(shè)計 太詳細(xì)了_第5頁
已閱讀5頁,還剩171頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ExcelVBA程序設(shè)計太詳細(xì)了ExcelVBA程序設(shè)計太詳細(xì)了/ExcelVBA程序設(shè)計太詳細(xì)了目錄TOC\o"1-3"\h\z一、VBA語言基礎(chǔ) 1第一節(jié)標(biāo)識符 1第二節(jié)運算符 1第三節(jié)數(shù)據(jù)類型 1第四節(jié)變量與常量 1第五節(jié)數(shù)組 2第六節(jié)注釋和賦值語句 2第七節(jié)書寫規(guī)范 2第八節(jié)判斷語句 2第九節(jié)循環(huán)語句 3第十節(jié)其他類語句和錯誤語句處理 4第十一節(jié)過程和函數(shù) 5一.Sub過程 5二.Function函數(shù) 5三.Property屬性過程和Event事件過程 5第十二節(jié)內(nèi)部函數(shù) 6一.測試函數(shù) 6二.?dāng)?shù)學(xué)函數(shù) 6三.字符串函數(shù) 6四.轉(zhuǎn)換函數(shù) 6五.時間函數(shù) 7第十三節(jié)文件操作 7文件 7刪除 7打開 7讀入 8寫入 8關(guān)閉 8其他文件函數(shù) 8二、VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué) 8第一課VBA是什么 81.1VBA是什么 81.2EXCEL環(huán)境中基于應(yīng)用程序自動化的優(yōu)點 91.3錄制簡單的宏 91.4執(zhí)行宏 101.5查看錄制的代碼 101.6編輯錄制的代碼 111.7錄制宏的局限性 121.8小結(jié) 12第二課處理錄制的宏 122.1為宏指定快捷鍵 122.2決定宏保存的位置 132.3個人宏工作簿 132.3.1保存宏到個人宏工作簿 132.3.2使用并編輯個人宏工作簿中的宏 132.4將宏指定給按鈕 142.5將宏指定給圖片或其他對象 142.6小結(jié) 14第三課學(xué)習(xí)控件 153.1EXCEL開發(fā)過程簡介 153.2認(rèn)識不同的控件 153.3向工作表添加控件 153.4設(shè)置控件的特性 163.5給控件命名 163.6使用用戶窗體 163.7疑難解答 17第四課理解變量和變量的作用 174.1代碼存在的位置:模塊 174.2對模塊的概覽 184.2.1創(chuàng)建過程 184.2.2運行宏 194.3保存對模塊所做的改變 194.4變量 194.4.1變量的數(shù)據(jù)類型 204.4.2用Dim語句創(chuàng)建變量(聲明變量) 214.4.3變量命名的慣例 214.4.4使用數(shù)組 224.4.5變量賦值 23第五課利用VBA設(shè)置工作表使用權(quán)限 231.使用With語句。 252.使用對象變量。 25方法3:減少對象的激活和選擇 26方法4:關(guān)閉屏幕更新 26第六課提高Excel中VBA的效率 27方法1:盡量使用VBA原有的屬性、方法和Worksheet函數(shù) 27方法2:盡量減少使用對象引用,尤其在循環(huán)中 281.使用With語句。 282.使用對象變量。 283.在循環(huán)中要盡量減少對象的訪問。 28方法3:減少對象的激活和選擇 28方法4:關(guān)閉屏幕更新 29第七課如何在Excel里使用定時器 29三、學(xué)習(xí)微軟Excel2002VBA編程和XML,ASP技術(shù) 31第一章電子表格自動化簡介和了解宏命令 311了解宏 312宏命令的普通應(yīng)用 313寫宏之前的計劃 324錄制宏 335運行宏 346修改宏代碼 357添加注釋 388分析宏代碼 389清除宏代碼 3910測試修改好的宏 4011兩個層面運行宏的方法 4012完善你的宏代碼 4113重新命名宏 4314運行宏的其它方法 4315使用鍵盤快捷鍵運行宏 4316通過菜單運行宏 4417通過工具欄按鈕運行宏 4618通過工作表里面的按鈕運行宏 4719保存宏 4820打印宏 4821保存宏在個人宏工作簿 4822打開含有宏的工作簿 5023VB編輯窗口 5124了解工程瀏覽窗口 5125了解屬性窗口 5226了解代碼窗口 5227VB編輯器里的其它窗口 5428接下來…… 55第二章VBA第一步 551了解指令,模塊和過程 552VBA工程命名 553模塊重命名 564從其它工程調(diào)用過程 575了解對象,屬性和方法 586學(xué)習(xí)對象,屬性和方法 597句法和文法 618打斷很長的VBA語句 639了解VBA錯誤 6310查找?guī)椭?6511語法和編程快捷助手 6612屬性/方法列表 6713常數(shù)列表 6714參數(shù)信息 6815快速信息 6816自動完成關(guān)鍵字 6817縮進/凸出 6918設(shè)置注釋塊/解除注釋塊 6919使用對象瀏覽器 6920使用VBA對象庫 7421用對象瀏覽器來定位過程 7522使用立即窗口 7523獲取立即窗口里的信息 7724學(xué)習(xí)對象 7725電子表格單元格操作 7826使用Range屬性 7827使用Cells屬性 7828使用Offset屬性 7929選擇單元格的其它方法 8030選擇行和列 8031獲取工作表信息 8132往工作表輸入數(shù)據(jù) 8133返回工作表中的信息 8134單元格格式 8135移動,復(fù)制和刪除單元格 8236操作工作簿和工作表 8237操作窗口(Windows) 8338管理Excel應(yīng)用程序 8439接下來…… 84第三章了解變量,數(shù)據(jù)類型和常量 841保存VBA語句的結(jié)果 852變量是什么 853數(shù)據(jù)類型 854如何產(chǎn)生變量 865如何聲明變量 866明確變量的數(shù)據(jù)類型 887變量賦值 898強制聲明變量 919了解變量范圍 9210過程級別(當(dāng)?shù)兀┳兞?9211模塊級別變量 9212工程級別變量 9313變量的存活期 9414了解和使用靜態(tài)變量 9415聲明和使用對象變量 9516使用明確的對象變量 9517查找變量定義 9618在VB過程里面使用常量 9619內(nèi)置常量 9620接下來…… 97第四章VBA過程:子程序和函數(shù) 981.關(guān)于函數(shù)過程 982.創(chuàng)建函數(shù)過程 983.執(zhí)行函數(shù)過程 1004.從工作表里運行函數(shù)過程 1005.從另外一個VBA過程里運行函數(shù)過程 1026.傳遞參數(shù) 1027.明確參數(shù)類型 1038.按地址和按值傳遞參數(shù) 1049.使用可選的參數(shù) 10510.定位內(nèi)置函數(shù) 10611.使用MsgBox函數(shù) 10712.MsgBox函數(shù)的運行值 11113.使用InputBox函數(shù) 11114.數(shù)據(jù)類型轉(zhuǎn)變 11315.使用InputBox方法 11416.使用主過程和子過程 11617.接下來…… 118第五章基于VBA做決定 1181.關(guān)系和邏輯運算符 1192.If…Then語句 1193.基于多于一個條件的決定 1214.TheIf…Then…Else語句 1225.If…Then…ElseIf語句 1256.嵌套的If…Then語句 1267.SelectCase語句 1278.和Case子句一起使用Is 1289.確定Case子句里數(shù)值的范圍 12910.在Case子句里確定多個表達式 13011.接下來… 130第六章在VBA中重復(fù)操作 1301.DoLoops:Do…While和Do…Until 1302.觀察過程執(zhí)行 1333.While…Wend循環(huán) 1344.For…Next循環(huán) 1355.ForEach…Next循環(huán) 1367.提前跳出循環(huán) 1378.循環(huán)嵌套 1389.接下來… 138一、VBA語言基礎(chǔ)ZhouJibin2004-11-30第一節(jié)標(biāo)識符一.定義標(biāo)識符是一種標(biāo)識變量、常量、過程、函數(shù)、類等語言構(gòu)成單位的符號,利用它可以完成對變量、常量、過程、函數(shù)、類等的引用。二.命名規(guī)則字母打頭,由字母、數(shù)字和下劃線組成,如A987b_23Abc字符長度小于40,(Excel2002以上中文版等,可以用漢字且長度可達254個字符)不能與VB保留字重名,如public,private,dim,goto,next,with,integer,single等第二節(jié)運算符定義:運算符是代表VB某種運算功能的符號。1)賦值運算符=2)數(shù)學(xué)運算符&、+(字符連接符)、+(加)、-(減)、Mod(取余)、\(整除)、*(乘)、/(除)、-(負(fù)號)、^(指數(shù))3)邏輯運算符Not(非)、And(與)、Or(或)、Xor(異或)、Eqv(相等)、Imp(隱含)4)關(guān)系運算符=(相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like、Is5)位運算符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語句可以強迫用戶進行變量定義。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)進行。在內(nèi)存中表現(xiàn)為一個連續(xù)的內(nèi)存塊,必須用Global或Dim語句來定義。定義規(guī)則如下:Dim數(shù)組名([lowerto]upper[,[lowerto]upper,….])astype;Lower缺省值為0。二維數(shù)組是按行列排列,如XYZ(行,列)。除了以上固定數(shù)組外,VBA還有一種功能強大的動態(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)賦值語句是進行對變量或?qū)ο髮傩再x值的語句,采用賦值號=,如X=123:Form1.caption=”我的窗口”對對象的賦值采用:setmyobject=object或myobject:=object第七節(jié)書寫規(guī)范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“A101”Price=200Case“A102”Price=300……CaseElsePrice=900EndCase3)Choose函數(shù)choose(index,choce-1,choice-2,…,choice-n),可以用來選擇自變量串列中的一個值,并將其返回,index必要參數(shù),數(shù)值表達式或字段,它的運算結(jié)果是一個數(shù)值,且界于1和可選擇的項目數(shù)之間。choice必要參數(shù),Variant表達式,包含可選擇項目的其中之一。如: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表達式。value必要參數(shù)。如果相關(guān)的表達式為True,則返回此部分的數(shù)值或表達式,沒有一個表達式為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ù)組或集合對象進行,讓所有元素重復(fù)執(zhí)行一次語句ForEachelementIngroupStatements[Exitfor]StatementsNext[element]如1:ForEachrang2Inrange1Witherior.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表達式值來跳轉(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ī)則,完成運算并返回結(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.作為一個表達式放在=右端;2.作為參數(shù)使用debug.printx1 endifEndsub三.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) ‘指出表達式是否為一個錯誤值IsNull(expression) ‘指出表達式是否不包含任何有效數(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為隨機種子三.字符串函數(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ù)計算機系統(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ù),用來指定文件名的字符串表達式,可能包含目錄或文件夾、以與驅(qū)動器。如果沒有找到pathname,則會返回零長度字符串("");attributes可選參數(shù)。常數(shù)或數(shù)值表達式,其總和用來指定文件屬性。如果省略,則會返回匹配pathname但不包含屬性的文件。刪除Killpathname 從磁盤中刪除文件,pathname參數(shù)是用來指定一個文件名RmDirpathname 從磁盤中刪除刪除目錄,pathname參數(shù)是用來指定一個文件夾打開OpenpathnameFormode[Accessaccess][lock]As[#]filenumber[Len=reclength]能夠?qū)ξ募斎?輸出(I/O)。pathname必要。字符串表達式,指定文件名,該文件名可能還包括目錄、文件夾與驅(qū)動器。mode必要。關(guān)鍵字,指定文件方式,有Append、Binary、Input、Output、或Random方式。如果未指定方式,則以Random訪問方式打開文件。access可選。關(guān)鍵字,說明打開的文件可以進行的操作,有Read、Write、或ReadWrite操作。lock可選。關(guān)鍵字,說明限定于其它進程打開的文件的操作,有Shared、LockRead、LockWrite、和LockReadWrite操作。filenumber必要。一個有效的文件號,范圍在1到511之間。使用FreeFile函數(shù)可得到下一個可用的文件號。reclength可選。小于或等于32,767(字節(jié))的一個數(shù)。對于用隨機訪問方式打開的文件,該值就是記錄長度。對于順序文件,該值就是緩沖字符數(shù)。說明對文件做任何I/O操作之前都必須先打開文件。Open語句分配一個緩沖區(qū)供文件進行I/O之用,并決定緩沖區(qū)所使用的訪問方式。如果pathname指定的文件不存在,那么,在用Append、Binary、Output、或Random方式打開文件時,可以建立這一文件。如果文件已由其它進程打開,而且不允許指定的訪問類型,則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)到達為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.要運行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打下堅實的基礎(chǔ).而且,當(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ù)進行復(fù)雜的操作和分析.用EXCEL作為開發(fā)平臺有如下原因:1.EXCEL本身功能強大,包括打印,文件處理,格式化和文本編輯.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)宏名主要是便于分別這些宏。★宏名最多可為255個字符,并且必須以字母開始。其中可用的字符包括:字母、數(shù)字和下劃線。宏名中不允許出現(xiàn)空格。通常用下劃線代表空格。5)選擇"格式"的"單元格",選擇"圖案"選項中的紅色,單擊"確定"。6)單擊"停止錄制"工具欄按鈕,結(jié)束宏錄制過程。※如果"停止錄制"工具欄開始并未出現(xiàn),請選擇"工具"-"宏"-"停止錄制"。錄制完一個宏后就可以執(zhí)行它了。1.4執(zhí)行宏當(dāng)執(zhí)行一個宏時,EXCEL按照宏語句執(zhí)行的情況就像VBA代碼在對EXCEL進行"遙控"。但VBA的"遙控"不僅能使操作變得簡便,還能使你獲得一些使用EXCEL標(biāo)準(zhǔn)命令所無法實現(xiàn)的功能。而且,一旦熟悉了EXCEL的"遙控",你都會奇怪自己在沒有這些"遙控"的情況下,到底是怎么熬過來的。要執(zhí)行剛才錄制的宏,可以按以下步驟進行:1)選擇任何一個單元格,比如A3。2)選擇"工具"-"宏"-"宏",顯示"宏"對話框。3)選擇"改變顏色",選擇"執(zhí)行",則A3單元格的顏色變?yōu)榧t色。試著選擇其它單元格和幾個單元格組成的區(qū)域,然后再執(zhí)行宏,以便加深印象。1.5查看錄制的代碼到底是什么在控制EXCEL的運行呢?你可能有些疑惑.好,讓我們看看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試著運行該宏,則無論開始選擇哪個單元格,宏運行結(jié)果都是使A5單元格變紅.現(xiàn)在可以看到,編輯錄制的宏同樣非常簡單。需要編輯宏是因為以下三個方面的原因。一:在錄制中出錯而不得不修改。二:錄制的宏中有多余的語句需要刪除,提高宏的運行速度。三:希望增加宏的功能。比如:加入判斷或循環(huán)等無法錄制的語句。1.7錄制宏的局限性希望自動化的許多EXCEL過程大多都可以用錄制宏來完成.但是宏記錄器存在以下局限性.通過宏記錄器無法完成的工作有:1)錄制的宏無判斷或循環(huán)能力.2)人機交互能力差,即用戶無法進行輸入,計算機無法給出提示.3)無法顯示EXCEL對話框.4)無法顯示自定義窗體.1.8小結(jié)本課中,你已經(jīng)掌握了VBA的一些基礎(chǔ)知識,你會錄制宏、編輯宏而且了解了錄制宏的局限性.你很努力.并且已經(jīng)為將來學(xué)習(xí)VBA甚至VB等編程語言打下了基礎(chǔ).關(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)的鍵。錄制宏后指定快捷鍵也很簡單,只需選擇"工具""宏",顯示"宏"對話框,選擇要指定快捷鍵的宏,再單擊"選項"按鈕,通過"選項"對話框進行設(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)。2.3.1保存宏到個人宏工作簿本練習(xí),將保存一個簡單的宏到個人宏工作簿,該宏為文本加下劃線并改為斜體,步驟如下:1)建立一個名為"HOUR2"的工作簿,選擇"工具"-"宏"-"錄制新宏",顯示"錄制新宏"對話框.2)輸入"格式化文本"作為宏名.3)從"保存在"下拉框中選擇"個人宏工作簿".4)單擊"確定"按鈕.現(xiàn)在進入錄制模式.5)單擊"斜體"工具欄按鈕.一段時間內(nèi),鼠標(biāo)出現(xiàn)沙漏,特別是在第一次創(chuàng)建個人宏工作簿時,因為EXCEL在創(chuàng)建該工作簿.6)單擊"下劃線"按鈕.7)停止錄制.2.3.2使用并編輯個人宏工作簿中的宏剛才已經(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編輯器中可以對該宏進行直接編輯或者刪除.如果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)試著在某個單元格中輸入文本,單擊按鈕運行該宏。當(dāng)鼠標(biāo)移動至該按鈕時自動變成手的形狀,如果要改變其大小或標(biāo)題,只需用右鍵單擊該按鈕就可以進行修改和設(shè)置。很明顯,你再也不需記住宏的名字或快捷鍵了,只需按一下按鈕。2.5將宏指定給圖片或其他對象要執(zhí)行宏有多種方法可以選擇,可以將宏指定給按鈕等控件,還可以指定給圖片、自定義工具欄、窗體甚至可以將宏指定給某個"事件",比如單擊工作表,雙擊工作表,激活工作表,打開工作簿等等,"事件"是一個重要的概念,除此而外"方法""對象"都是將來你會經(jīng)常接觸到的?,F(xiàn)在它們看來十分抽象,但是將來你會很熟悉這些詞語。指定宏到圖片十分簡單,只需單擊某個圖片,單擊快捷菜單中的"指定宏"進行設(shè)置即可。如果不希望在工作表上添加控件或圖片執(zhí)行宏,還有一種方法可以選擇:將宏指定給"工具欄按鈕",可按如下步驟進行:1)打開"HOUR2"工作簿,選擇"工具"-"定義",顯示"自定義工具欄"對話框。2)從"類別"列表框中選擇"宏",從"命令"列表框中選擇"自定義按鈕"。3)將"自定義按鈕"拖動到工具欄。4)右鍵單擊該按鈕,選擇"指定宏",顯示"指定宏"對話框。5)選擇"格式化文本"并確定。6)單擊"關(guān)閉"按鈕,關(guān)閉"自定義工具欄"對話框。7)試著在某個單元格中輸入文本,單擊工具欄按鈕運行該宏。2.6小結(jié)小結(jié)與思考:宏存放于三個可能的位置。個人宏工作簿存放的位置和特性。執(zhí)行宏的方式。指定宏是為某個對象的事件指定一個程序,一旦這個對象以該事件激活,系統(tǒng)將運行指定的程序。常用的對象有: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)分組框:它用于將其他控件進行組合。3)按鈕:用于執(zhí)行宏命令。4)復(fù)選框:它是一個選擇控件,通過單擊可以選擇和取消選擇,可以多項選擇。5)選項按鈕:通常幾個選項按鈕組合在一起使用,在一組中只能選擇一個選項按鈕。6)列表框:用于顯示多個選項并從中選擇。只能單選。7)組合框:用于顯示多個選項并從中選擇。可以選擇其中的項目或者輸入一個其它值。8)滾動條:不是你常見的來給很長的窗體添加滾動能力的控件,而是一種選擇機制。例如調(diào)節(jié)過渡色的滾動條控件。包括水平滾動條和垂直滾動條。9)微調(diào)控件:也是一種數(shù)值選擇機制,通過單擊控件的箭頭來選擇數(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)的信息進行組織或分類.例如:你也許希望用選項卡條來顯示各個地區(qū)的銷售信息,可以給每個地區(qū)設(shè)置一個選項卡.在默認(rèn)時,選項卡包含兩頁,分別叫做TAB1和TAB2,可以添加更多的選項卡.C)多頁:外觀類似選項卡條,是包含一頁或多頁的控件.選項卡條給人相似的外觀,而多頁控件的各頁包含各自不同的控件,有各自不同的布局.多頁的例子很多,例如:"設(shè)置控件格式"對話框和"工具"菜單中的"選項"對話框.以與"格式"菜單中的"單元格..."對話框.D)圖像控件:它允許向窗體上放置圖片.圖片格式須為:*.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf.F)RefEdit:這是工具箱中默認(rèn)情況下的最后一個控件。它外觀象文本框,通過這個控件可以將用戶窗體折疊起來,以便選擇單元格區(qū)域。還記得在使用fx"粘貼函數(shù)"時的情況嗎?通過實踐,我們會逐漸掌握每個控件的特性,這的確需要花時間,但不必死記硬背。在對用戶窗體設(shè)計得滿意時,可以對其進行預(yù)覽,方法是在VBA編輯器中選擇該窗體,單擊"運行"菜單中的三角符號"運行子過程/用戶窗體",三角符號在VBA工具欄上也可能看得到,旁邊是一個垂直的等于符號,最右邊是個小正方形符號,它們類似于錄音機上的按鈕。運行窗體的另一個方法是按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)列舉兩種可以讓用戶進行多選一的控件。2)如何將控件與單元格鏈接起來。2.判斷:1)只有在VBA編輯器中才能添加用戶窗體。2)在VBA編輯器中看到的窗體網(wǎng)格線在運行時會自動顯示。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ù)或是進行某種計算的語句。工作簿的每個過程都有唯一的名字加以區(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)單擊這個命令按鈕時,就會運行這個事件過程。函數(shù)過程通常情況下稱為函數(shù),要返回一個數(shù)值。這個數(shù)值通常是計算的結(jié)果或是測試的結(jié)果,例如False或True.正如前面所說,可以用VBA創(chuàng)建自定義函數(shù)。實際上可以在工作表上使用你創(chuàng)建的函數(shù)。程序清單4-2是一個計算價格的10%為運費的簡單例子。程序清單4-2簡單的用戶定義函數(shù)示例。PublicFunctionShipping(Price)Shipping=Price*0.1EndFunction請注意,這個函數(shù)使用一個參數(shù)(Price).子程序和函數(shù)都可以使用參數(shù)。不論Price的值是多少,它都將決定運費額。Price可以是數(shù)字和單元格引用。函數(shù)返回計算出來的運費,這個函數(shù)可以用在單元格中。AB1Price1002Shipping=shipping(B1)4.2.1創(chuàng)建過程創(chuàng)建第一個過程需要兩個基本步驟。首先,需要向工作簿中添加一個模塊。接著需要向模塊中添加一個工程。對于創(chuàng)建的每一個應(yīng)用程序,只需添加一次模塊??梢允褂枚鄠€模塊,但這是不必要的。某些開發(fā)者喜歡使用多個模塊,以便根據(jù)他們的目的或者窗體對過程進行組織。在本練習(xí)中,創(chuàng)建的過程只顯示一個消息框。在本練習(xí)中創(chuàng)建的過程只顯示一個消息框。在本練習(xí)中使用Msgbox是為了提供一個可見的例子,雖然我們還沒有介紹過Msgbox語句,但是在本例中將使用它。要創(chuàng)建該過程,請按如下步驟進行: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個字符。4.2.2運行宏創(chuàng)建這個過程后,可以運行一下。運行一個過程有幾種方法:可以直接使用"運行"菜單,"運行子程序/用戶窗體"工具欄按鈕或按下F5鍵。要運行一個過程,可以按照如下步驟:1)單擊"運行子程序/用戶窗體"工具欄按鈕,過程執(zhí)行并顯示一個消息框。2)單擊消息框之中的"確定"按鈕,關(guān)閉該消息框。4.3保存對模塊所做的改變要保存新過程,需要保存過程所駐留的工作簿.可以用VBA編輯器保存工作簿.具體步驟如下:1)選擇"文件"-"保存工作簿".因為本工作簿還沒有保存過,所以要給它命名.2)輸入"HOUR4"作為文件名并按回車鍵,則工作簿和模塊與過程都保存下來了.第四課理解變量和變量的作用ExcelHome4.4變量變量是用于臨時保存數(shù)值的地方.每次應(yīng)用程序運行時,變量可能包含不同的數(shù)值,而在程序運行時,變量的數(shù)值可以改變.為了說明為什么需要變量,可以按照如下步驟創(chuàng)建一個簡單的過程:1)創(chuàng)建一個名為"你叫什么名字"的過程.2)在過程中輸入如下代碼:Inputbox"輸入你的名字:"現(xiàn)在不要擔(dān)心inputbox語句的語法,將在第六學(xué)時中了解到有關(guān)這條命令的更多信息.3)按下F5鍵運行過程,這時會顯示一個輸入框,要求輸入你的名字.4)輸入你的名字并按"確定"按鈕,則結(jié)束該過程.你輸入的名字到那里去了?如何找到用戶在輸入框中輸入的信息?在這種情況下,需要使用變量來存儲用戶輸入的結(jié)果.4.4.1變量的數(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--4947E-324正值范圍:4.947E-324-1.79769313486232E308Currency8字節(jié)-922337203685477-922337203685477Decimal14字節(jié)不包括小數(shù)時:+/-79228162514264337593543950335包括小數(shù)時:+/7.9228162514264337593543950335Date8字節(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ù)類型只是對計算機存儲空間的浪費。4.4.2用Dim語句創(chuàng)建變量(聲明變量)現(xiàn)在,你對變量可以使用的數(shù)據(jù)類型已經(jīng)比較熟悉了,以下我們將創(chuàng)建變量.創(chuàng)建變量可以使用Dim語句,創(chuàng)建變量通常成為"聲明變量"Dim語句的基本語法如下:Dim變量名AS數(shù)據(jù)類型這條語法中的變量名代表將要創(chuàng)建的變量名.對變量的命名規(guī)則和對過程的命名規(guī)則相同.這條語句中的數(shù)據(jù)類型部分可以是表4-1中的任何一種數(shù)據(jù)類型.變量名必須以字母開始,并且只能包含字母數(shù)字和特定的特殊字符,不能包含空格句號驚嘆號,也不能包含字符@&$#.名字最大長度為255個字符在接下來的練習(xí)中將說明如何在VBA中使用變量,你將要輸入你的名字,并用一個消息框?qū)⑵滹@示出來.具體步驟如下:1)創(chuàng)建一個名為"顯示你的名字"的子程序.2)輸入以下代碼:PublicSub顯示你的名字()Dims名字AsStrings名字=Inputbox("請輸入你的名字:")Msgbox"你好"&s名字EndSub3)將鼠標(biāo)放到過程中的任何地方,按下F5鍵運行過程,會顯示一個輸入框.4)輸入你自己的名字并按回車鍵,會顯示一個消息框,顯示的文字中包含你自己的名字.5)單擊"確定"按鈕,返回過程中.在Dim語句中不必提供數(shù)據(jù)類型.如果沒有數(shù)據(jù)類型,變量將被定義為Variant類型,因為VBA中默認(rèn)的數(shù)據(jù)類型是Variant.你知道這一點后,最初的反應(yīng)也許是覺得應(yīng)該不用自己決定數(shù)據(jù)類型,而將一切拋給VBA.這種觀念是完全錯誤的.你必須決定選擇使用何種數(shù)據(jù)類型。因為Variant數(shù)據(jù)類型占用存儲空間較大(16或22字節(jié))而且它將影響程序的性能。VBA必須辨別Variant類型的變量中存儲了何種類型的數(shù)據(jù)。4.4.3變量命名的慣例下表給出了推薦的變量命名慣例數(shù)據(jù)類型短前綴長前綴ArrayaaryBooleanfbinBytebbitCurrencyccurDoubleddblDate/Timedtdtm/datIntegeriintLongllngObjectoobjSinglesngStringsstrVariantvvar表4-2變量命名的前綴4.4.4使用數(shù)組如果你使用過其他編程序語言,可能對數(shù)組已經(jīng)比較熟悉了.數(shù)組是具有相同數(shù)據(jù)類型并共同享有一個名字的一組變量的集合.數(shù)組中的元素通過索引數(shù)字加以區(qū)分,定義數(shù)組的方法如下:Dimarray_name(n)Astype(其中n是數(shù)組元素的個數(shù))例如,如果要創(chuàng)建保存10個學(xué)生名字的數(shù)組,可以用以下語句:Dims學(xué)生名字(9)AsInteger注意,括號中的數(shù)字是9而不是10.這是因為在默認(rèn)的情況下,第一個索引數(shù)字是0.數(shù)組在處理相似信息時非常有用.假設(shè)要處理15門考試成績,可以創(chuàng)建15個獨立的變量,這意味著要使用15個Dim語句。也可以創(chuàng)建一個數(shù)組來保存考試成績,具體如下:Dims考試成績(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論