




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VBA語言基礎(chǔ)簡(jiǎn)介(VisualBasicApplication)這里只做一些vba最基本的介紹,很多函數(shù),過程的具體使用不可能一一說明,同學(xué)們參考vba函數(shù)速查手冊(cè)第一節(jié)標(biāo)識(shí)符一定義標(biāo)識(shí)符是一種標(biāo)識(shí)變量、常量、過程、函數(shù)、類等語言構(gòu)成單位的符號(hào),利用它可以完成對(duì)變量、常量、過程、函數(shù)、類等的引用。二命名規(guī)則1 )字母打頭,由字母、數(shù)字和下劃線組成,如A987b_23Abc2 )字符長(zhǎng)度小于403 )不能與VB保留字重名,如public,private,dim,goto,next,with,integer,single等第二節(jié)運(yùn)算符定義:運(yùn)算符是代表VB某種運(yùn)算功能的符號(hào)。1 )賦值運(yùn)算符=2
2、 )數(shù)學(xué)運(yùn)算符&、+(字符連接符)、+(加)、-(減)、Mod(取余)、(整除)、*(乘)、/(除)、-(負(fù)號(hào))、八(指數(shù))3 )邏輯運(yùn)算符Not(非)、And(與)、Or(或)、Xor(異或)、Eqv(相等)、Imp(隱含)4 )關(guān)系運(yùn)算符=(相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like、Is5)位運(yùn)算符(暫時(shí)可不看位運(yùn)算)Not(邏輯非)、And(邏輯與)、Or(邏輯或)、Xor(邏輯異或)、Eqv(邏輯等)、Imp(隱含)第三節(jié)數(shù)據(jù)類型VBA共有12種數(shù)據(jù)類型,具體見下表,此外用戶還可以根據(jù)以下類型用T
3、ype自定義數(shù)據(jù)類型。數(shù)據(jù)類型類型標(biāo)識(shí)符字節(jié)字符串型String$字符長(zhǎng)度(0-65400)字節(jié)型Byte無1布爾型Boolean無2整數(shù)型Integer%2長(zhǎng)整數(shù)型Long&4單精度型Single!4雙精度型Double#8日期型Date無8公元100/1/1-9999/12/31貨幣型Currency8小數(shù)點(diǎn)型Decimal無14變體型Variant無以上任意類型,可變對(duì)象型Object無4第四節(jié)變量與常量1)VBA允許使用未定義的變量,默認(rèn)是變體變量。2)在模塊通用說明部份,加入OptionExplicit語句可以強(qiáng)迫用戶進(jìn)行變量定義。3)變量定義語句及變量作用域Dim變量as類
4、型定義為局部變量,如DimxyzasintegerPrivate變量as類型定義為私有變量,如PrivatexyzasbytePublic變量as類型定義為公有變量,如PublicxyzassingleGlobal變量as類型定義為全局變量,如GloblalxyzasdateStatic變量as類型定義為靜態(tài)變量,如Staticxyzasdouble一般變量作用域的原則是,那部份定義就在那部份起作用,模塊中定義則在該模塊那作用。4)常量為變量的一種特例,用Const定義,且定義時(shí)賦值,程序中不能改變值,作用域也如同變量作用域。如下定義:ConstPi =第五節(jié)數(shù)組數(shù)組是包含相同數(shù)據(jù)類型的一組變
5、量的集合,對(duì)數(shù)組中的單個(gè)變量引用通過數(shù)組索引下標(biāo)進(jìn)行。在內(nèi)存中表現(xiàn)為一個(gè)連續(xù)的內(nèi)存塊,必須用Global或Dim語句來定義。定義規(guī)則如下:Dim數(shù)組名(lowertoupper,lowertoupper,.)astype;Lower缺省值為0。二維數(shù)組是按行列排列,如DimX(9)asString聲明了一個(gè)10個(gè)元素的數(shù)組,X(0)X(9),如果沒有指定lower,則默認(rèn)lower=00再例如DimMyArray(10,10)AsInteger,是個(gè)11*11整數(shù)數(shù)組除了以上固定數(shù)組外,VBA還有一種功能強(qiáng)大的動(dòng)態(tài)數(shù)組,定義時(shí)無大小維數(shù)聲明;在程序中再利用Redim語句來重新改變數(shù)組大小,原來
6、數(shù)組內(nèi)容可以通過加preserve關(guān)鍵字來保留。如下例:Dimarray1()asdouble:Redimarray1(5):array1(3)=250:Redimpreservearray1(5,10)第六節(jié)注釋和賦值語句1)注釋語句是用來說明程序中某些語句的功能和作用,注釋語句不會(huì)被執(zhí)行;VBA中有兩種方法標(biāo)識(shí)為注釋語句。單引號(hào);如:定義全局變量;可以位于別的語句之尾,也可單獨(dú)一行Rem如:Rem定義全局變量;只能單獨(dú)一行2)賦值語句是進(jìn)行對(duì)變量或?qū)ο髮傩再x值的語句,采用賦值號(hào)=,如X=123:="我的窗口”對(duì)對(duì)象的賦值采用:setmyobject=object或myobject
7、:=object第七節(jié)書寫規(guī)范1)VBA不區(qū)分標(biāo)識(shí)符的字母大小寫,一律認(rèn)為是小寫字母;2)最好以行只寫一條語句。一行可以書寫多條語句,各語句之間以冒號(hào):分開;3)一條語句可以多行書寫,以空格加下劃線_來標(biāo)識(shí)下行為續(xù)行;4)標(biāo)識(shí)符最好能簡(jiǎn)潔明了,不造成歧義。第八節(jié)判斷語句1) IfThenElse語句IfconditionThenstatementsElseelsestatementscondition是個(gè)判斷條件,當(dāng)condition為真True,就執(zhí)行Then后面的statements那些語句,如果為假False,執(zhí)行elsestatements語句如1:IfA>BAndC<TD
8、henA=B+2ElseA=C+2如2:Ifx>250Thenx=x-100或者,可以使用塊形式的語法,即If-Then-Else語句可以嵌套:IfconditionThenstatementsElseIfcondition-nThenelseifstatements.ElseelsestatementsEndIf如1:IfNumber<10ThenDigits=1ElseIfNumber<100ThenDigits=2ElseDigits=3EndIf2) SelectCaseCaseEndCase語句如1:Pid的取值來決定執(zhí)行不同的語句SelectCasePidCase
9、“A101”Price=200當(dāng)Pid的實(shí)際值是“A101”,就執(zhí)行Price=200.后面的以此類推Case“A102”Price=300CaseElsePrice=900EndCase第九節(jié)循環(huán)語句1)ForNext語句以指定次數(shù)來重復(fù)執(zhí)行一組語句Forcounter=startToendStepstep'step缺省值為1statementsExitForstatementsNextcounter如1:for語句也可以嵌套,如下,兩重for循環(huán)For Words=10To1Step -1建立 10 次循環(huán)' 建立 10 次循環(huán)將數(shù)字添加到字符串中Incrementcoun
10、ter' 添加一個(gè)空格ForChars=0To9MyString=MyString&CharsNextCharsMyString=MyString&""NextWords2) ForEachNext語句主要功能是對(duì)一個(gè)數(shù)組或集合對(duì)象進(jìn)行,讓所有元素重復(fù)執(zhí)行一次語句其作用就是遍歷一遍數(shù)組或集合對(duì)象中的所有元素ForEachelementIngroupgroup必要參數(shù)。對(duì)象集合或數(shù)組的名稱(用戶定義類型的數(shù)組除外)。StatementsExitforStatementsNextelement如1:ForEachrang2Inrange1.colorin
11、dex=6.pattern=xlSolidEndwithNext這上面一例中用到了WithEndWith語句,目的是省去對(duì)象多次調(diào)用,加快速度;語法為:WithobjectstatementsEndWith3) Doloop語句在條件為true時(shí),重復(fù)執(zhí)行區(qū)塊命令Dowhile|untilcondition'while為當(dāng)型循環(huán),until為直到型循環(huán),顧名思義,不多說啦StatementsExitdoStatementsLoop或者使用下面語法Do'先do再判斷,即不論如何先干一次再說StatementsExitdoStatementsLoopwhile|untilcondi
12、tion4) whilewend語句,只要條件為TRUE循環(huán)就執(zhí)行如下例:whileconditionwhileI<50statementsI=I+1wend第十節(jié)其他類語句和錯(cuò)誤語句處理這節(jié)可以省略,感興趣的話可以看看一其他循環(huán)語句結(jié)構(gòu)化程序使用以上判斷和循環(huán)語句已經(jīng)足夠,建議不要輕易使用下面的語句,雖然VBAE支持。1) Gotoline該語句為跳轉(zhuǎn)到line語句行2) Onexpressiongosubdestinatioinlist或者onexpressiongotodestinationlist語句為根據(jù)exprssion表達(dá)式值來跳轉(zhuǎn)到所要的行號(hào)或行標(biāo)記3) Gosublin
13、elineReturn語句,Return返回至UGosubline行,如下例:Subgosubtry()DimnumNum=inputbox(“輸入一個(gè)數(shù)字,此值將會(huì)被判斷循環(huán)”)Ifnum>0thenGosubRoutine1:ExitsubRoutine1:Num=num/5ReturnEndsubWend二錯(cuò)誤語句處理執(zhí)行階段有時(shí)會(huì)有錯(cuò)誤的情況發(fā)生,利用OnError語句來處理錯(cuò)誤,啟動(dòng)一個(gè)錯(cuò)誤的處理程序。語法如下:OnErrorGotoLine當(dāng)錯(cuò)誤發(fā)生時(shí),會(huì)立刻轉(zhuǎn)移到line行去OnErrorResumeNext當(dāng)錯(cuò)誤發(fā)生時(shí),會(huì)立刻轉(zhuǎn)移到發(fā)生錯(cuò)誤的下一行去OnErroGoto0
14、當(dāng)錯(cuò)誤發(fā)生時(shí),會(huì)立刻停止過程中任何錯(cuò)誤處理過程第十一節(jié)過程和函數(shù)過程是構(gòu)成程序的一個(gè)模塊,往往用來完成一個(gè)相對(duì)獨(dú)立的功能。過程可以使程序更清晰、更具結(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()Dimx1asintegerDimy1a
15、sintegerx1=12y1=100Callpassword(x1,y1)'調(diào)用過程方式:過程名(參數(shù)1,參數(shù)2);2.過程名參數(shù)1,參數(shù)2,y1結(jié)果是12、112,y1按地址傳遞改變了值,而x1按值傳遞,未改變?cè)礒ndsub2 Function函數(shù)函數(shù)實(shí)際是實(shí)現(xiàn)一種映射,它通過一定的映射規(guī)則,完成運(yùn)算并返回結(jié)果。參數(shù)傳遞也兩種:按值傳遞(ByVal)和按地址傳遞(ByRef)。如下例:Functionpassword(ByValxasinteger,byrefyasinteger)asbooleanIfy=100theny=x+yelsey=x-yx=x+100ify=150th
16、enpassword=trueelsepassword=falseEndFunctionSubcall_password()Dimx1asintegerDimy1asintegerx1=12y1=100ifpasswordthen調(diào)用函數(shù):1.作為一個(gè)表達(dá)式放在=右端;2.作為參數(shù)使用endifEndsub3 Property屬性過程和Event事件過程這是VB在對(duì)象功能上添加的兩個(gè)過程,與對(duì)象特征密切相關(guān),也是VBA比較重要組成,技術(shù)比較復(fù)雜,可以參考相關(guān)書籍。我們的試驗(yàn)不涉及這兩部分第十二節(jié)內(nèi)部函數(shù)在VBA程序語言中有許多內(nèi)置函數(shù),可以幫助程序代碼設(shè)計(jì)和減少代碼的編寫工作。這部分重要是供我
17、們查閱,直接使用的。一般要注意某個(gè)函數(shù)的需要輸入的參數(shù)是什么類型的,函數(shù)的返回值又是什么類型的一測(cè)試函數(shù)IsNumeric(x),返回Boolean結(jié)果,TrueorFalseIsDate(x)是否是日期,返回Boolean結(jié)果,TrueorFalseIsEmpty(x)是否為Empty,返回Boolean結(jié)果,TrueorFalseIsArray(x)指出變量是否為一個(gè)數(shù)組。IsError(expression)'指出表達(dá)式是否為一個(gè)錯(cuò)誤值'指出標(biāo)識(shí)符是否表示對(duì)象變量(Null) 。IsNull(expression)IsObject(identifier)二數(shù)學(xué)函數(shù)Sin(
18、X)、Cos(X)、Tan(X)、Atan(x)三角函數(shù),單位為弧度Log(x)返回x的自然對(duì)數(shù)Exp(x)返回exAbs(x)返回絕對(duì)值Int(number)、Fix(number)都返回參數(shù)的整數(shù)部分,區(qū)別:Int將轉(zhuǎn)換成-9,而Fix將轉(zhuǎn)換成-8Sgn(number)返回一個(gè)Variant(Integer),指出參數(shù)的正負(fù)號(hào)Sqr(number)返回一個(gè)Double,指定參數(shù)的平方根VarType(varname)返回一個(gè)Integer,指出變量的子類型Rnd(x)返回0-1之間的單精度數(shù)據(jù),x為隨機(jī)種子三字符串函數(shù)Trim(string)去掉string左右兩端空白Ltrim(stri
19、ng)去掉string左端空白Len(string)Rtrim(string)去掉string右端空白計(jì)算string長(zhǎng)度Left(string,x)Right(string,x)Mid(string,start,x)Ucase(string)Lcase(string)Space(x)Asc(string)Chr(charcode)符四轉(zhuǎn)換函數(shù)CBool(expression)CByte(expression)CCur(expression)CDate(expression)CDbl(expression)CDec(expression)CInt(expression)CLng(express
20、ion)CSng(expression)CStr(expression)CVar(expression)Val(string)Str(number)取string左段x個(gè)字符組成的字符串取string右段x個(gè)字符組成的字符串取string從start位開始的x個(gè)字符組成的字符串轉(zhuǎn)換為大寫轉(zhuǎn)換為小寫返回x個(gè)空白的字符串返回一個(gè)integer,代表字符串中首字母的字符代碼返回string,其中包含有與指定的字符代碼相關(guān)的字轉(zhuǎn)換為Boolean型轉(zhuǎn)換為Byte型轉(zhuǎn)換為Currency型轉(zhuǎn)換為Date型轉(zhuǎn)換為Double型轉(zhuǎn)換為Decemal型轉(zhuǎn)換為Integer型轉(zhuǎn)換為L(zhǎng)ong型轉(zhuǎn)換為Single型轉(zhuǎn)換為String型轉(zhuǎn)換為Variant型轉(zhuǎn)換為數(shù)據(jù)型轉(zhuǎn)換為String五時(shí)間函數(shù)N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綜合校準(zhǔn)系統(tǒng)戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 《生物化學(xué)》課程標(biāo)準(zhǔn)
- 冷庫(kù)貨物儲(chǔ)存合同范本
- 辦公材料訂購(gòu)合同范本
- 化工空調(diào)采購(gòu)合同范本
- 個(gè)人自我反省檢討書
- 個(gè)人工作犯錯(cuò)檢討書
- 口腔治療合同范本
- 單位承包小區(qū)合同范例
- 養(yǎng)生館招募合伙人合同范本
- 關(guān)于魯迅簡(jiǎn)介
- 余華讀書分享名著導(dǎo)讀《文城》
- 植物組織培養(yǎng)(園林植物教研組)-說課稿
- 高三二輪專題復(fù)習(xí)化學(xué)課件-分布系數(shù)(分?jǐn)?shù))圖像
- 變更更正戶口項(xiàng)目申請(qǐng)表
- (譯林版)六年級(jí)英語完形填空100篇(含答案和講解)
- 云南省蒙自市長(zhǎng)橋海水庫(kù)擴(kuò)建工程環(huán)評(píng)報(bào)告
- 大數(shù)據(jù)分析教學(xué)大綱教案
- 質(zhì)量手冊(cè)(依據(jù)ISO9001:2023年標(biāo)準(zhǔn))
- 算24點(diǎn)教學(xué)講解課件
- 提高住院患者痰培養(yǎng)標(biāo)本留取的合格率品管圈ppt匯報(bào)書
評(píng)論
0/150
提交評(píng)論