VBA與Excel程序設(shè)計教程_第1頁
VBA與Excel程序設(shè)計教程_第2頁
VBA與Excel程序設(shè)計教程_第3頁
VBA與Excel程序設(shè)計教程_第4頁
VBA與Excel程序設(shè)計教程_第5頁
已閱讀5頁,還剩146頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄

一、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ù)4

—.Sub過程5

二?Function函數(shù)5

三.Property屬性過程和Event事件過程5

第十二節(jié)內(nèi)部函數(shù)5

一.測試函數(shù)5

二.數(shù)學(xué)函數(shù)6

三.字符串函數(shù)6

四.轉(zhuǎn)換函數(shù)6

五.時間函數(shù)6

第十三節(jié)文件操作7

刪除7

打7

讀7

寫7

8

二、VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)1

第一課VBA是什么1

1.1VBA是什么1

1.2EXCEL環(huán)境中基于應(yīng)用程序自動化的優(yōu)點1

1.3錄制簡單的宏2

1.4執(zhí)行宏2

1.5查看錄制的代碼2

1.6編輯錄制的代碼3

1.7錄制宏的局限性4

1.8小結(jié)4

第二課處理錄制的宏4

2.1為宏指定快捷鍵4

2.2決定宏保存的位置5

2.3個人宏工作簿5

231保存宏到個人宏工作簿5

2.3.2使用并編輯個人宏工作簿中的宏5

2.4將宏指定給按鈕6

2.5將宏指定給圖片或其他對象6

2.6小結(jié)7

第三課學(xué)習(xí)控件7

3.1EXCEL開發(fā)過程簡介7

3.2認(rèn)識不同的控件7

3.3向工作表添加控件7

3.4設(shè)置控件的特性8

3.5給控件命名8

3.6使用用戶窗體8

3.7疑難解答9

第四課理解變量和變量的作用9

4.1代碼存在的位置:模塊9

4.2對模塊的概覽10

4.2.1創(chuàng)建過程10

4.2.2運行宏11

4.3保存對模塊所做的改變11

4.4變量11

4.4.1變量的數(shù)據(jù)類型11

4.4.2用Dim語句創(chuàng)建變量(聲明變量)13

4.4.3變量命名的慣例13

4.4.4使用數(shù)組14

4.4.5變量賦值15

第五課利用VBA設(shè)置工作表使用權(quán)限15

1.使用With語句。17

2.使用對象變量。17

方法3:減少對象的激活和選擇17

方法4:關(guān)閉屏幕更新18

第六課提高Excel中VBA的效率19

方法1:盡量使用VBA原有的屬性、方法和Worksheet函數(shù)19

方法2:盡量減少使用對象引用,尤其在循環(huán)中19

1.使用W汕語句。19

2.使用對象變量。20

3.在循環(huán)中要盡量減少對象的訪問。20

方法3:減少對象的激活和選擇20

方法4:關(guān)閉屏幕更新20

第七課如何在Excel里使用定時器20

三、學(xué)習(xí)微軟Excel2002VBA編程和XML,ASP技術(shù)22

第一章電子表格自動化簡介和了解宏命令22

1了解宏22

2宏命令的普通應(yīng)用22

3寫宏之前的計劃23

4錄制宏24

5運行宏25

6修改宏代碼26

7添加注釋29

8分析宏代碼29

9清除宏代碼30

10測試修改好的宏31

11兩個層面運行宏的方法31

12完善你的宏代碼32

13重新命名宏34

14運行宏的其它方法34

15使用鍵盤快捷鍵運行宏34

16通過菜單運行宏35

17通過工具欄按鈕運行宏37

18通過工作表里面的按鈕運行宏38

19保存宏39

20打E[1宏39

21保存宏在個人宏工作簿39

22打開含有宏的工作簿41

23VB編輯窗口42

24了解工程瀏覽窗口42

25了解屬性窗口43

26了解代碼窗口43

27VB編輯器里的其它窗口45

28接下來46

第二章VBA第一步46

1了解指令,模塊和過程46

2VBA工程命名46

3模塊重命名47

4從其它工程調(diào)用過程48

5了解對象,屬性和方法49

6學(xué)習(xí)對象,屬性和方法50

7句法和文法52

8打斷很長的VBA語句54

9了解VBA錯誤54

10查找?guī)椭?6

11語法和編程快捷助手57

12屬性/方法列表58

13常數(shù)列表58

14參數(shù)信息59

15快速信息59

16自動完成關(guān)鍵字59

17縮進(jìn)/凸出60

18設(shè)置注釋塊/解除注釋塊60

19使用對象瀏覽器60

20使用VBA對象庫65

21用對象瀏覽器來定位過程66

22使用立即窗口66

23獲取立即窗口里的信息68

24學(xué)習(xí)對象68

25電子表格單元格操作69

26使用Range屬性69

27使用Cells屬性69

28使用Offset屬性70

29選擇單元格的其它方法71

30選擇行和列71

31獲取工作表信息72

32往工作表輸入數(shù)據(jù)72

33返回工作表中的信息72

34單元格格式72

35移動,復(fù)制和刪除單元格73

36操作工作簿和工作表73

37操作窗口(Windows)74

38管理Excel應(yīng)用程序75

39接下來……75

第三章了解變量,數(shù)據(jù)類型和常量75

1保存VBA語句的結(jié)果76

2變量是什么76

3數(shù)據(jù)類型76

4如何產(chǎn)生變量77

5如何聲明變量77

6明確變量的數(shù)據(jù)類型79

7變量賦值80

8強制聲明變量82

9了解變量范圍83

10過程級別(當(dāng)?shù)兀┳兞?3

11模塊級別變量83

12工程級別變量84

13變量的存活期85

14了解和使用靜態(tài)變量85

15聲明和使用對象變量86

16使用明確的對象變量86

17查找變量定義87

18在VB過程里面使用常量87

19內(nèi)置常量87

20接下來...88

第四章VBA過程:子程序和函數(shù)89

1.關(guān)于函數(shù)過程89

2.創(chuàng)建函數(shù)過程89

3.執(zhí)行函數(shù)過程91

4.從工作表里運行函數(shù)過程91

5.從另外一個VBA過程里運行函數(shù)過程93

6.傳遞參數(shù)93

7.明確參數(shù)類型94

8.按地址和按值傳遞參數(shù)95

9.使用可選的參數(shù)96

10.定位內(nèi)置函數(shù)97

11.使用MsgBox函數(shù)98

12.MsgBox函數(shù)的運行值102

13.使用InputBox函數(shù)102

14.數(shù)據(jù)類型轉(zhuǎn)變104

15.使用InputBox方法105

16.使用主過程和子過程107

17.接下來109

第五章基于VBA做決定109

1.關(guān)系和邏輯運算符110

2.If...Then語句110

3.基于多于一個條件的決定112

4.TheIf…Then...Else語句113

5.1f…Then...ElseIf語句116

6.嵌套的If...Then語句117

7.SelectCase語句118

8.和Case子句一起使用Is119

9.確定Case子句里數(shù)值的范圍120

10.在Case子句里確定多個表達(dá)式121

1L接下來121

第六章在VBA中重復(fù)操作121

l.DoLoops:Do...While和Do...Until121

2.觀察過程執(zhí)行124

3.While…Wend循環(huán)125

4.For...Next循環(huán)126

5.ForEach...Next循環(huán)127

7.提前跳出循環(huán)128

8福環(huán)嵌套129

9.接下來129

VBA語言基礎(chǔ)橄欖樹整理

、VBA語言基礎(chǔ)

ZhouJibin2004~11~30

第一節(jié)標(biāo)識符

一.定義

標(biāo)識符是一種標(biāo)識變量、常量、過程、函數(shù)、類等語言構(gòu)成單位的符號,利用它可以完成對變量、

常量、過程、函數(shù)、類等的引用。

二.命名規(guī)則

1)字母打頭,由字母、數(shù)字和下劃線組成,如A987b_23Abc

2)字符長度小于40,(Excel2002以上中文版等,可應(yīng)用漢字且長度可達(dá)254個字符)

3)不能與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、

Is

5)位運算符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

貨幣型Currency8

小數(shù)點型Decimal無14

變體型Variant無以上任意類型,可變

對象型Object無4

第四節(jié)變量與常量

1)VBA允許使用未定義的變量,默認(rèn)是變體變量。

2)在模塊通用說明部份,加入OptionExplicit語句可以強迫用戶進(jìn)行變量定義。

3)變量定義語句及變量作用域

Dim變量as類型’定義為局部變量,如Dimxyzasinteger

Private變量as類型’定義為私有變量,如Privatexyzasbyte

Public變量as類型’定義為公有變量,如Publicxyzassingle

1

VBA語言基礎(chǔ)橄欖樹整理

Global變量as類型'定義為全局變量,如Globlalxyzasdate

Static變量as類型'定義為靜態(tài)變量,如Staticxyzasdouble

一般變量作用域的原則是,那部份定義就在那部份起作用,模塊中定義則在該模塊那作用。

4)常量為變量的一種特例,用Const定義,且定義時賦值,程序中不能改變值,作用域也如同變量作用

域。如下定義:ConstPi-3.1415926assingle

第五節(jié)數(shù)組

數(shù)組是包含相同數(shù)據(jù)類型的一組變量的集合,對數(shù)組中的單個變量引用通過數(shù)組索引下標(biāo)進(jìn)行。在

內(nèi)存中表現(xiàn)為一個連續(xù)的內(nèi)存塊,必須用Global或Dinr語句來定義。定義規(guī)則如下:

Dim數(shù)組名([lowerto]upper[,[lowerto]upper,,?,.])astype;Lo\ver缺省值為0。二維數(shù)組是

按行列排列,如XYZ(行,列)。

除了以上固定數(shù)組外,VBA還有一種功能強大的動態(tài)數(shù)組,定義時無大小維數(shù)聲明;在程序中再利

用Rodim語句來重新改變數(shù)組大小,原來數(shù)組內(nèi)容可以通過加preserve關(guān)鍵字來保留。如下例:

Dimarray1()asdouble:Redimarray1(5):array1(3)=250:Redimpreservearray1(5,10)

第六節(jié)注釋和賦值語句

1)注釋語句是用來說明程序中某些語句的功能和作用;VBA中有兩種方法標(biāo)識為注釋語句。

/單引號‘;如:’定義全局變:;可以位于別的語句之尾,也可單獨一行

/Rem;如:Rem定義全精變M;只能單獨一行

2)賦值語句是進(jìn)行對變量或?qū)ο髮傩再x值的語句,采用賦值號如X=123:Forml.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]

[Elselfcondition-nThen

[elseifstatements]

[Else

[elsestatements]]

EndIf

如1:

IfNumber<10Then

Digits=1

ElselfNumber<100Then

Digits=2

Else

2

VBA語言基礎(chǔ)橄欖樹整理

Digits=3

EndIf

2)SelectCase…Case…EndCase語句

如1:

SelectCasePid

Case“AIOI”

Price=200

Case“A102”

Price=300

CaseElse

Price=900

EndCase

3)Choose函數(shù)

choose(index,choce-1,choice-2,choice-n),可以用來選擇自變量串列中的?個值,并將其返

回,index必要參數(shù),數(shù)值表達(dá)式或字段,它的運算結(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ù)字添加到字符串中

NextCharsIncrementcounter

MyString=MyString&添加一個空格

NextWords

2)ForEach…Next語句主要功能是對一個數(shù)組或集合對象進(jìn)行,讓所有元素重復(fù)執(zhí)行一次語句

ForEachelementIngroup

Statements

[Exitfor]

Statements

Next[element]

如1:

ForEachrang2Inrange1

Withrange2.interior

.colorindex=6

.pattern=xlSolid

Endwith

3

VBA語言基礎(chǔ)橄欖樹整理

Next

這上面一例中用到了With-EndWith語句,目的是省去對象多次調(diào)用,加快速度;語法為:

Withobject

[statements]

EndWith

3)Do???loop語句在條件為true時,重復(fù)執(zhí)行區(qū)塊命令

Do{while|until}condition'wlii1('為'7代語」不,uniiI為不,忖彳思義,不多說啦

Statements

Exitdo

Statements

Loop

或者使用下面語法

Do'先do再判斷,即不論如何先I次再說

Statements

Exitdo

Statements

Loop{while|until}condition

第十節(jié)其他類語句和錯誤語句處理

--其他循環(huán)語句

結(jié)構(gòu)化程序使用以上判斷和循環(huán)語句已經(jīng)足夠,建議不要輕易使用卜.面的語句,雖然VBA還支持。

1)Gotoline該語句為跳轉(zhuǎn)到line語句行

2)Onexpressiongosubdestinatioinlist或者onexpressiongotodestinationlist語句為根據(jù)

exprssion表達(dá)式值來跳轉(zhuǎn)到所要的行號或行標(biāo)記

3)Gosubline…line…Return語句,Return返回到Gosubline行,如下例:

Subgosubtry()

Dimnum

Num二inputbox(“輸入一個數(shù)字,此值將會被判斷循環(huán)”)

Ifnum>0thenGosubRoutine1:Debug,printnum:Exitsub

Routinel:

Num=num/5

Return

Endsub

4)while…wend語句,只要條件為TRUE,循環(huán)就執(zhí)行,這是以前VB老語法保留下來的,如下例:

whilecondition'whileI<50

[statements]‘1-1+1

wend'Wend

二.錯誤語句處理

執(zhí)行階段有時會有錯誤的情況發(fā)生,利用OnError語句來處理錯誤,啟動一個錯誤的處理程序。語法如

下:

OnErrorGotoLine,當(dāng)錯誤發(fā)t時,會立刻轉(zhuǎn)移到line行去

OnErrorResumeNext'"i錯誤發(fā)生時,會立刻轉(zhuǎn)移到發(fā)生錯誤的下一行去

OnErroGoto0.當(dāng)錯次發(fā)生時,會、工刻件1匕工程中任何錯i吳處理過程

第十一節(jié)過程和函數(shù)

過程是構(gòu)成程序的一個模塊,往往用來完成一個相對獨立的功能。過程可以使程序更清晰、更具結(jié)

構(gòu)性。VBA具有四種過程:Sub過程、Function函數(shù)、Property屬性過程和Event事件過程。

4

VBA語言基礎(chǔ)橄欖樹整理

Sub過程

Sub過程的參數(shù)有兩種傳遞方式:按值傳遞(ByVai)和按地址傳遞(ByRef)。如下例:

Subpassword(ByVaixasinteger,ByRefyasinteger)

Ify=100theny=x+yelsey=x-y

x=x+100

Endsub

Subcall_password()

Dimxlasinteger

Dimy1asinteger

xl=12

yl=100

Callpassword(xl,yl)'調(diào)用過程方式:1.Call過程片(參數(shù)1,

數(shù)1,參數(shù)2…

debug,printxl,yl'結(jié)果是12、1⑵yl按地址傳遞改變「值,向xl按侑傳遞,未改變原值

Endsub

二.Function函數(shù)

函數(shù)實際是實現(xiàn)一種映射,它通過一定的映射規(guī)則,完成運算并返回結(jié)果。參數(shù)傳遞也兩種:按值

傳遞(ByVai)和按地址傳遞(ByRef)。如下例:

Functionpassword(ByVaixasinteger,byrefyasinteger)asboolean

Ify=100theny=x+yelsey=x-y

x=x+100

ify=150thenpassword=trueelsepassword二false

EndFunction

Subcall_password()

Dimxlasinteger

Dimylasinteger

xl=12

yl=100

ifpasswordthen,調(diào)用函數(shù):1.作為一個發(fā)達(dá)式放在二。端;2.作為參數(shù)使用

debug,printxl

endif

Endsub

三.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é)果,TrueorFalse

IsDate(x)'是否是日期,返回Boolean結(jié)果,TrueorFalse

IsEmpty(x)'是否為Empty,返回Boolean結(jié)果,TrueorFalse

IsArray(x)'指出變量是否為一個數(shù)組。

IsError(expression)'指出表達(dá)式是否為一個錯誤值

IsNull(expression)'指出表達(dá)式是否不包含任何有效數(shù)據(jù)(Null)。

IsObject(identifier)'指出標(biāo)識符是否表示對象變量

5

VBA語言基礎(chǔ)橄欖樹整理

一.數(shù)學(xué)函數(shù)

Sin(X)、Cos(X)、Tan(X)、Atan(x)三角函數(shù),單位為弧度

Log(x)返回x的自然對數(shù)

Exp(x)返回ex

Abs(x)返回絕對值

Int(number)Fix(number)都返回參數(shù)的整數(shù)部分,區(qū)別:Int將-8.4轉(zhuǎn)換成-9,而Fix將-8.4轉(zhuǎn)

換成-8

Sgn(number)返回一個Variant(Integer),指出參數(shù)的正負(fù)號

Sqr(number)返回一個Double,指定參數(shù)的平方根

VarType(varname)返回一個Integer,指出變量的子類型

Rnd(x)返回0T之間的單精度數(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)換為大寫

Lease(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型

Vai(string)轉(zhuǎn)換為數(shù)據(jù)型

Str(number)轉(zhuǎn)換為String

五.時間函數(shù)

Now返回一個Variant(Date),根據(jù)計算機(jī)系統(tǒng)設(shè)置的日期和時間來指定日期和時間。

Date返回包含系統(tǒng)日期的Variant(Date)o

Time返回一個指明當(dāng)前系統(tǒng)時間的Variant(Date)o

Timer返回一個Single,代表從午夜開始到現(xiàn)在經(jīng)過的秒數(shù)。

TimeSerial(hour,minute,second)返回一個Variant(Date),包含具有具體時、分、秒的時間。

DateDiff(interval,datel,date2[,firstdayofweek[,firstweekofyear]])返回Variant(Long)的

值,表示兩個指定II期間的時間間隔數(shù)目

6

VBA語言基礎(chǔ)橄欖樹整理

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ū)ξ募?/p>

入/輸出(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之間。使用EreeFile函數(shù)可得到下一個可用

的文件號。reclength可選。小于或等于32,767(字節(jié))的一個數(shù)。對于用隨機(jī)訪問方式打開的文件,

該值就是記錄長度。對于順序文件,該值就是緩沖字符數(shù)。

說明對文件做任何I/O操作之前都必須先打開文件。Open語句分配?個緩沖區(qū)供文件進(jìn)行I/O之用,

并決定緩沖區(qū)所使用的訪問方式。如果pathname指定的文件不存在,那么,在用?\ppend^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ù)寫入磁盤文件中。

7

VBA語言基礎(chǔ)橄欖樹整理

關(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ù)都被iE確讀出。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)前的讀/寫位

8

VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)橄欖樹整理

二、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ù)進(jìn)行復(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

VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)橄欖樹整理

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é)束宏錄制過程。

X如果"停止錄制〃工具欄開始并未出現(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的運行呢?你可能有些疑惑.好,讓我們看看VBA的語句吧.

1)選擇“工具〃,宏宏〃,顯示‘'宏”對話框。

2)單擊列表中的“改變顏色〃,選擇〃編輯“按鈕。

此時,會打開VBA的編輯器窗口(VBE)o關(guān)于該編輯器,以后再詳細(xì)說明,先將注意力

集中到顯示的代碼上。代碼如下:(日期和姓名會有不同)

Sub改變顏色0

'改變顏色Macro

'xw記錄的宏2000-6-10

2

VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)橄欖樹整理

WithSelection.Interior

.Colorindex=3

.Pattern=xlSolid

.PatternColorlndex=xlAutomatic

EndWith

EndSub

將來會十分熟悉這種代碼,雖然現(xiàn)在它們看上去像一種奇怪的外語。學(xué)習(xí)VBA或編程語言在

某種程度上比較像在學(xué)習(xí)一種外語。

Sub改變顏色0:這是宏的名稱。

中間的以開頭的五行稱為‘'注釋",它在錄制宏時自動產(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

表示純色。

.PatternColorlndex=xlAutomatic:表示內(nèi)部圖案底紋顏色為自動配色。

EndWith:結(jié)束With語句。

EndSub:整個宏的結(jié)束語

1.6編輯錄制的代碼

在上一節(jié),我們錄制了一個宏并查看了代碼,代碼中有兩句實際上并不起作用。哪兩

句?現(xiàn)在,在宏中作一個修改,刪除多余行,直到和下面代碼相同:

Sub改變顏色()

'改變顏色Macro

'xw記錄的宏2000-6T0

3

VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)橄欖樹整理

WithSelection.Interior

,Colorindex=3

EndWith

EndSub

完成后,在工作表中試驗一下。你會發(fā)現(xiàn)結(jié)果和修改前的狀況一樣。在With語句前加

入一行:

Range("A5").Select

試著運行該宏,則無論開始選擇哪個單元格,宏運行結(jié)果都是使A5單元格變紅.

現(xiàn)在可以看到,編輯錄制的宏同樣非常簡單。需要編輯宏是因為以下三個方面的原因。

-:在錄制中出錯而不得不修改。二:錄制的宏中有多余的語句需要刪除,提高宏的運行速

度。三:希望增加宏的功能。比如:加入判斷或循環(huán)等無法錄制的語句。

1.7錄制宏的局限性

希望自動化的許多EXCEL過程大多都可以用錄制宏來完成.但是宏記錄器存在以下局限

性.通過宏記錄器無法完成的工作有:

1)錄制的宏無判斷或循環(huán)能力.

2)人機(jī)交互能力差,即用戶無法進(jìn)行輸入,計算機(jī)無法給出提示.

3)無法顯示EXCEL對話框.

4)無法顯示自定義窗體.

1.8小結(jié)

本課中,你已經(jīng)掌握了VBA的一些基礎(chǔ)知識,你會錄制宏、編輯宏而且了解了錄制宏的局

限性.你很努力.并且已經(jīng)為將來學(xué)習(xí)VBA甚至VB等編程語言打下了基礎(chǔ).關(guān)鍵是你已經(jīng)了解

了一個謎底,就是說,你了解了什么是編程.下面是些小練習(xí),做完后才可以去玩喲.

思考:

DVBA只能用于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)的快捷鍵。例如:

4

VisualBASIC程序設(shè)計網(wǎng)絡(luò)教學(xué)橄欖樹整理

把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\Applicat

溫馨提示

  • 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

提交評論