前言
人做事情要從小事做起,就是再厲害的武林高手也要每天運(yùn)功采氣,所以,最基礎(chǔ)的也是最重要的,一定要打好根基啊!
基本概念
變量,常量和數(shù)據(jù)類型
VB語(yǔ)句與控制流
過(guò)程
常用函數(shù)
VB的基本概念之一:標(biāo)識(shí)符
標(biāo)識(shí)符:變量,常量,數(shù)據(jù)類型,過(guò)程,函數(shù),類等定義的名字.
規(guī)則:必須以字母(A-Z,a-z),數(shù)字(0-9)或下劃線,長(zhǎng)度不能超過(guò)255個(gè)字符,且標(biāo)識(shí)符不能與VB的關(guān)鍵字同名.
例如:Dim Mystring As String Const Pi=3.1415926 Public function getvalue() As Integer
VB6的關(guān)鍵字
VB6的關(guān)鍵字有:As Binary ByRef ByVal Date Else Empty Error False For Friend Get Input Is Len Let Lock Me Mid New Next Nothing Null On Option Optional ParamArray Print Private Property Public Resume Seek Set Static Setp String Then Time To True WithEvents
VB的數(shù)據(jù)類型(一)
Boolean(布爾型):占用2字節(jié)
Byte(字節(jié)):占用1字節(jié).
Integer(整型):類型標(biāo)識(shí)%,占用2字節(jié).
Long(長(zhǎng)整型):標(biāo)識(shí)"&",4字節(jié).
Single(單精度型):標(biāo)識(shí)"!",占用4字節(jié).
Double(雙精度型):標(biāo)識(shí)"#",8字節(jié).
Currency(貨幣型):標(biāo)識(shí)"@",8字節(jié).
Date(日期型):8字節(jié).
String(字符串,變長(zhǎng)):標(biāo)識(shí)"$",10字節(jié)+串長(zhǎng).
VB的數(shù)據(jù)類型(二)
String(字符串,定長(zhǎng)):標(biāo)識(shí)"$",串長(zhǎng).
Object(對(duì)象型):占用4字節(jié).
Variant(變體,數(shù)值):占用16字節(jié).
自定義(User_define):元素申請(qǐng)的長(zhǎng)度之和.
VB的變量
變量名的命名遵從標(biāo)識(shí)符命名規(guī)則.
變量的聲明:VB可以使用不聲明的變量.如:Form的Click過(guò)程,加入下列代碼:Private sub Form_click() Stringtext$="Hello,World!" print "*********",Stringtext$ end sub
VB變量的聲明
格式:Dim 變量 AS 類型 :說(shuō)明局部變量
格式2:Private 變量 As 類型 :說(shuō)明私有變量
格式3:Public 變量 As 類型 :說(shuō)明公告全局變量
格式4:Static 變量 As 類型 : 說(shuō)明靜態(tài)變量
VB變量聲明示例
變量聲明
變量聲明應(yīng)注意的問(wèn)題
Dim a,b,c As Integer是錯(cuò)誤的.本意是將a,b,c都說(shuō)明為Integer ,但實(shí)際上只有c被聲明成Integer,而a,b缺省為Variant類型.
使用不帶As的Dim語(yǔ)句,會(huì)被聲明成Variant類型的變量.
對(duì)于聲明boolean型的變量,其缺省值為False.
為聲明為Date類型的變量賦值時(shí),日期值應(yīng)放在一對(duì)#之間,且多種日期和時(shí)間格式在VB中都是有效的.如: date1=#1-10-98#:date2=#10-1-98 12:20am#
VB變量的作用域和生存期
變量的作用域是指變量的有效作用范圍,也就是變量可以被訪問(wèn)的范圍.
VB按三種方式來(lái)定義變量的作用范圍:過(guò)程(在過(guò)程內(nèi)部使用Dim或Static),私有(在模塊開頭加上Dim或Private),公共(在模塊開頭加上Public)
變量的生存期是指VB保存該變量值的時(shí)間,是變量在整個(gè)程序運(yùn)行過(guò)程中的有效生存時(shí)間.
過(guò)程變量
是指在過(guò)程或函數(shù)內(nèi)部定義的變量,這種變量無(wú)論是用Dim還是Static聲明,其作用域都只是該過(guò)程或函數(shù)體,在過(guò)程函數(shù)外不能引用.因此,在不同的過(guò)程或函數(shù)中可以存在相同名字的變量.
使用Dim和Static聲明的過(guò)程變量的作用域都是一樣的,但生存期不一樣.用Dim聲明變量時(shí),它的生存隨著包含它的過(guò)程或函數(shù)的運(yùn)行而終止,VB不再保留其值.用Static聲明的變量,其生存期為整個(gè)程序,在包含它的過(guò)程或函數(shù)再次被調(diào)用時(shí),VB將不會(huì)再次對(duì)它初始化,其值為上次過(guò)程或函數(shù)調(diào)用完成后的值.
過(guò)程變量示例一
過(guò)程變量示例二
窗體層變量
它是在窗體的通用部分聲明的變量,即不是在任何一個(gè)窗體內(nèi)的過(guò)程或函數(shù)中聲明的變量.它的作用范圍至少是窗體的存在范圍,即是在窗體內(nèi)的每個(gè)過(guò)程或函數(shù)中都可以使用窗體層變量.可以用Dim\Private\Public聲明.
對(duì)于用Dim和Private聲明的窗體層變量,其作用范圍都是在所聲明的窗體范圍內(nèi).用Public聲明的窗體變量作為窗體公用數(shù)據(jù)成員,作用可以大于當(dāng)前窗體范圍.引用方式是"窗體名.變量名".
窗體層變量示例
模塊層變量
在模塊通用部分dim\private\global\public聲明的變量."模塊"在"工程"中選擇"添加模塊"菜單項(xiàng)來(lái)實(shí)現(xiàn).
用dim\private 聲明的模塊層變量作用域?yàn)樗谀K范圍,用public\global定義的模塊層變量則可以全局使用.引用方式是"模塊名.變量名".
變量作用范圍總結(jié)
過(guò)程
局域變量
過(guò)程
局域變量
窗體
窗體級(jí)變量在通用中聲明,專用變量?jī)H在此窗體中可見
模塊
模塊級(jí)變量在通用中聲明專用變量?jī)H在此模塊中可見
全局變量 用public\global在模塊聲明
VB的常量
VB中的常量可分為:系統(tǒng)內(nèi)在常量和符號(hào)常量.
系統(tǒng)內(nèi)在常量:是系統(tǒng)提供的自身?yè)碛械某A?如:表示顏色的常量P36).可與應(yīng)用程序的對(duì)象,方法和屬性一起使用.
符號(hào)常量:程序中用Const聲明的常量,聲明后,我們就可以用常量名來(lái)引用其代表的常數(shù).
例如:const pi=3.1415926
VB符號(hào)常量的定義
語(yǔ)法:[Public|Private] Const 變量名[As 數(shù)據(jù)類型]=表達(dá)式.
其中Public 公有聲明,使用Public聲明的常量可在整個(gè)應(yīng)用程序中使用,它必須在標(biāo)準(zhǔn)模塊的聲明區(qū)中使用.在窗體模塊或類模塊中不能聲明Public常量.
Private 是私有聲明,可用在模塊級(jí)聲明常量(是指放在窗體,類或標(biāo)準(zhǔn)模塊內(nèi)的聲明;Private關(guān)鍵字不能在過(guò)程聲明變量時(shí)使用.
使用VB常量應(yīng)注意的問(wèn)題
用const聲明的常量在程序運(yùn)行過(guò)程中是不能被重新賦值的.
在常量聲明的同時(shí)賦值.
可以為聲明的常量指定數(shù)據(jù)類型,如 const conVal As Currency=3.78
VB中的數(shù)組
數(shù)組是有相同數(shù)據(jù)類型的一組變量的集合.用Private,Public,Global或Dim語(yǔ)句來(lái)聲明.
格式:Dim 數(shù)組名(lower,upper) As (type)
如:Dim record(5) As Integer Dim Matrix(2,3) As Integer
動(dòng)態(tài)數(shù)組:帶有空()的Dim 可以聲明一個(gè)動(dòng)態(tài)數(shù)組.如:Dim dnyArray()
靜態(tài)數(shù)組
是指數(shù)組元素的個(gè)數(shù)是固定不變的,即它們占用的內(nèi)存空間大小是固定不變的.
根據(jù)維數(shù)的不同,可分為一維數(shù)組和多維數(shù)組.
VB動(dòng)態(tài)數(shù)組
目的:根據(jù)需要來(lái)確定數(shù)目.
格式:Dim MyArry( ) As Integer
在用時(shí),必須使用ReDim語(yǔ)句把它重新定義(即具體化).
靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組
靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)是不變的.
動(dòng)態(tài)數(shù)組,可以在程序運(yùn)行時(shí)根據(jù)需要,精確定義數(shù)組的大小.在聲明數(shù)組時(shí),不給出維數(shù)列表就是將數(shù)組聲明為動(dòng)態(tài)數(shù)組.如:Dim MyArry () As Integer
但使用時(shí),還需使用ReDim語(yǔ)句把它重新定義,如ReDim MyArry(10,10)
Lbound,Ubound函數(shù)與數(shù)組
LBound函數(shù)和Ubound函數(shù)都是返回一個(gè)Long型數(shù)據(jù),前者得到的值為指定數(shù)組維可用的最小下標(biāo),而后者得到的是最大下標(biāo).
格式:Lbound(數(shù)組名[,指定的維數(shù)]) Ubound(數(shù)值組名[,指定的維數(shù)])
使用數(shù)組時(shí)應(yīng)注意
數(shù)組名命名規(guī)則和變量名的相同.
數(shù)組名后是用圓括弧,不能用方括弧.
下標(biāo)的下界必須不能大于其上界.
記錄類型數(shù)據(jù)
記錄類型定義: [Private|Public] Type 記錄類型名 成員列 End Type
在記錄類型中聲明靜態(tài)數(shù)時(shí),必須用數(shù)字文字或常量而不能用變量來(lái)聲明.
定義記錄類型變量:用來(lái)說(shuō)明擁有這種類型的變量,如:Dim stu1,stu2 As stu.
記錄類型變量的賦值和檢索.
VB的運(yùn)算符
賦值運(yùn)算符:用來(lái)給變量,變長(zhǎng)數(shù)組或?qū)ο蟮膶傩再x值.把運(yùn)算符右邊的內(nèi)容(包括常量,變量,函數(shù)返回值或?qū)ο蟮膶傩?
格式:variable=value variable可以是變量,數(shù)組的元素,變長(zhǎng)數(shù)組或?qū)ο蟮膶傩?nbsp;value可以是常數(shù),常量,變量,表達(dá)式或函數(shù)調(diào)用
VB賦值運(yùn)算示例
"="運(yùn)算
左 邊 是
對(duì)象.屬性
運(yùn)算符使用示例
Value=10
Value=sin(3.14/4)
10=pi
3+x=40
使用賦值號(hào)應(yīng)注意: 1,賦值號(hào)左邊必須是變量或?qū)ο蟮膶傩?不能是數(shù)值,常量和表達(dá)式. 2,賦值號(hào)兩端的數(shù)據(jù)類型應(yīng)該匹配,不匹配時(shí)應(yīng)進(jìn)行適當(dāng)轉(zhuǎn)換. 3,給對(duì)象賦值時(shí),只有運(yùn)行時(shí)可改寫的對(duì)象屬性才能被賦值.
VB運(yùn)算符之一:數(shù)學(xué)運(yùn)算符
∧:指數(shù)運(yùn)算
-:負(fù)號(hào)運(yùn)算符
* /:乘除運(yùn)算,其中除法所得到的結(jié)果為實(shí)數(shù)
\ :整除,所得到結(jié)果為實(shí)際結(jié)果的整數(shù)部分.
MOD:取模運(yùn)算,兩數(shù)相除取余數(shù).
+ - :加減運(yùn)算.
&,+: 連接字符.
&與+連接運(yùn)算符的區(qū)別
&強(qiáng)制兩個(gè)表達(dá)式(它們的類型可能不同)做字符串連接;而當(dāng)+運(yùn)算符兩邊的表達(dá)式中混有數(shù)值字符串及數(shù)值,其結(jié)果會(huì)是數(shù)值的求和,如果都是字符串則作"相加",返回連接起來(lái)的字符串.
示例:Var1="34":Var2=6 MyNumber=Var1+Var2 返回40 MyNumber=Var1&Var2 返回346
VB數(shù)學(xué)運(yùn)算符使用示例
數(shù)學(xué)運(yùn)算
VB運(yùn)算符之一:關(guān)系運(yùn)算符
=:比較兩表達(dá)式是否相等.等為真,否則為假.
:比較表達(dá)式是否不等.不等為真,相等為假.
> 或=或<=:大小比較.
LIKE:用于比較兩個(gè)字符串,模式匹配為真,否則為假.
IS:比較兩個(gè)對(duì)象是否一致,一致為真,否則為假.
VB關(guān)系運(yùn)算符使用示例
關(guān)系運(yùn)算
IS比較示例
有下列語(yǔ)句: Dim_ myobject,yourobject,thisobject,otherobject,mycheck set yourobject=myobject set thisobject=myobject set thatobject=otherobject mycheck=yourobject is thisobject 'true mycheck=thatobject is thisobject 'false
LIKE示例
如:Dim Mycheck Mycheck="aBBBa" like "a*a" 'BBB與*相匹配,返回結(jié)果True
見書P58
VB的邏輯運(yùn)算符
邏輯非(NOT)運(yùn)算:
邏輯與運(yùn)算(AND)
邏輯或(OR)運(yùn)算
邏輯異或(XOR)和邏輯等(EQV)運(yùn)算
隱含(Imp)運(yùn)算
VB語(yǔ)句與控制
賦值語(yǔ)句
注釋語(yǔ)句:VB中用'和rem來(lái)標(biāo)識(shí)一條注釋語(yǔ)句.
條件分支結(jié)構(gòu):if 語(yǔ)句
循環(huán)語(yǔ)句
END語(yǔ)句
VB賦值語(yǔ)句
包括兩種:一種用來(lái)對(duì)一般的變量進(jìn)行賦值的賦值語(yǔ)句,用關(guān)鍵字LET描述,但一般都省略.另一種是用來(lái)對(duì)對(duì)象的變量進(jìn)行賦值的賦值語(yǔ)句,用關(guān)鍵字SET描述,不能省略.
格式:[let]變量或?qū)傩?表達(dá)式 set 變量(對(duì)象)=表達(dá)式
VB注釋語(yǔ)句
引入目的:為程序的閱讀和修改提供信息,提高程序的可讀性和可維護(hù)性.
注釋方法有兩種:'或REM關(guān)鍵字.
二者區(qū)別:在一行中做注釋時(shí),REM必須使用:與前面的語(yǔ)句隔開,撇號(hào)則不必.
條件分支——IF語(yǔ)句
第一種格式:if 條件 then
語(yǔ)句
end if 如果條件為true,則執(zhí)行"語(yǔ)句",否則執(zhí)行end if后面語(yǔ)句.
第二種格式:if 條件 then
語(yǔ)句
else
語(yǔ)句
end if
IF語(yǔ)句的第三種格式
If 條件1 then
語(yǔ)句1
else if 條件2 then
語(yǔ)句2
else
語(yǔ)句3
end if 如果條件1為true,則執(zhí)行語(yǔ)句1,如果為false,則檢查條件2,如果條件2為true,則執(zhí)行語(yǔ)句2,如果條件2為false,則執(zhí)行語(yǔ)句3.
條件語(yǔ)句——select case語(yǔ)句
格式: select case 測(cè)試表達(dá)式
case 條件1
語(yǔ)句1
………
case else
語(yǔ)句
end select
VB將測(cè)試表達(dá)式的值與此同時(shí)結(jié)構(gòu)中的每個(gè)case的值進(jìn)行比較,如果相等,就執(zhí)行與該case 相關(guān)的程序段,如果都不等,則執(zhí)行case else所對(duì)應(yīng)的程序段.
Case 語(yǔ)句舉例一
用select case…….語(yǔ)句判斷0-9范圍內(nèi)整樹的奇偶性.
select case Num_ten
case 0,2,4,6,8
print "偶數(shù)"
case 1,3,5,7,9
print "奇數(shù)"
end select
循環(huán)語(yǔ)句:Do……Loop語(yǔ)句
第一種格式:Do While 條件式
[程序段]
Loop
當(dāng)條件為true時(shí),循環(huán)繼續(xù),直到條件變?yōu)镕alse為止.
示例一
Private Sub Form_Click()
Dim I As Integer
I=1
Do While I5
Print I
I=I+1
Loop
End sub
Do……Loop第三種格式
Do
[程序段]
Loop While 條件式
當(dāng)條件式為true時(shí),循環(huán)繼續(xù)進(jìn)行,直到條件式變?yōu)閒alse為止.
示例三
Private Sub Form_Click()
Dim I As Integer
I=6
Do
Print I
I=I+1
Loop While I5
End Sub
For …Next 語(yǔ)句
語(yǔ)法規(guī)則:
For 計(jì)數(shù)器=初值室 To 終值 [step增量]
語(yǔ)句
[If 條件式 Then Exit For]'特定條件下退出
語(yǔ)句
next [計(jì)數(shù)器]
示例:P69
For Each …Next
For each 元素In 數(shù)組或集合
[程序段]
[IF條件式Then exit for]'特定條件下退出
[程序段]
next [元素]
這里的元素變量只能是variant類型或?qū)ο箢愋?
使用時(shí)應(yīng)注意的問(wèn)題
與for…next的區(qū)別在于前者是對(duì)于指定集合或集合中的每個(gè)元素重復(fù)執(zhí)行某個(gè)程序段,而后者使用計(jì)數(shù)器變量控制循環(huán)過(guò)程.
每次循環(huán)時(shí),元素變量所代表的是數(shù)組中當(dāng)前元素的值,而不是元素本身.
示例
For Each I In Form1.Controls
I.Enabled=False
Next I
While…… Wend語(yǔ)句
While 條件式
程序段
wend
如果條件式為true,則所有的語(yǔ)句都會(huì)執(zhí)行,一直執(zhí)行到wend語(yǔ)句.然后再回到while語(yǔ)句檢查條件式,如果條件式為true,則重復(fù)執(zhí)行.如果不為true,則wend之后的語(yǔ)句繼續(xù)執(zhí)行.
Do Events函數(shù)與閑置循環(huán)
在Windows 的多任務(wù)環(huán)境下,就算有程序運(yùn)行在運(yùn)行一個(gè)長(zhǎng)時(shí)間循環(huán),其他應(yīng)用程序也會(huì)分到CPU時(shí)間,但是該程序在運(yùn)行循環(huán)時(shí),對(duì)該程序中的其它事件不作響應(yīng).
因此,我們?cè)趯懗绦驎r(shí),"事件過(guò)程"不宜寫的太長(zhǎng),更不可以有太長(zhǎng)的循環(huán).如果要用長(zhǎng)的循環(huán),又要避免能夠及時(shí)響應(yīng)其它事件的發(fā)生,只有采用兩種方法:其一,使用DoEvents函數(shù);其二,寫成"閑置循環(huán)".
DoEvents 函數(shù)
DoEvents 函數(shù)將控制權(quán)轉(zhuǎn)交給操作系統(tǒng),以便讓系統(tǒng)有機(jī)會(huì)去檢查是否有其他事件需要提供服務(wù),他的語(yǔ)法說(shuō)明如下:
語(yǔ)法:DoEvents( )
DoEvents 函數(shù)會(huì)返回 VB應(yīng)用程序中打開窗體的數(shù)目.
NumForms = DoEvents( )
DoEvents 會(huì)將控制權(quán)傳給操作系統(tǒng).當(dāng)操作系統(tǒng)處理完隊(duì)列中的事件,并且在 SendKeys 隊(duì)列中的所有鍵也都已送出之后,返回控制權(quán).
閑置循環(huán)
對(duì)VB 應(yīng)用程序來(lái)說(shuō),事件之間的時(shí)間叫做"空閑時(shí)間".在"空閑時(shí)間"里,VB 自動(dòng)將控制權(quán)交還給Windows.當(dāng)某個(gè)應(yīng)用程序中的一個(gè)事件發(fā)生時(shí)VB 再為它向Windows 請(qǐng)求CPU時(shí)間.
如果你想編一個(gè)只在"空閑時(shí)間"里執(zhí)行的循環(huán),在代碼模塊中使用SubMain過(guò)程,使應(yīng)用程序馬上開始執(zhí)行程序(而不必等待窗體上發(fā)生事件).
VB的數(shù)學(xué)函數(shù)
表 3-20 數(shù)學(xué)函數(shù)功能表
函數(shù)名
功能
Abs
求絕對(duì)值
Atn
反正切函數(shù)
Cos
余弦函數(shù)
Exp
求指數(shù)
Fix
取整數(shù),對(duì)負(fù)數(shù)取較大的
Int
取整數(shù),對(duì)負(fù)數(shù)取較小的
Log
求對(duì)數(shù)
Rnd
產(chǎn)生一個(gè)0~1間的隨機(jī)數(shù)
Sgn
求數(shù)字符號(hào)
Sin
正弦函數(shù)
Sqr
求平方根
Tan
正切函數(shù)
VB日期和時(shí)間函數(shù)
表3-21 日期函數(shù)功能表
函數(shù)名
功能
Date
取得系統(tǒng)當(dāng)前日期
Time
取得系統(tǒng)當(dāng)前時(shí)間
Now
取得系統(tǒng)當(dāng)前日期和時(shí)間
Year
返回指定日期中的年份
Month
返回指定日期中的月份(1-12)
Day
返回指定日期中天(1-31)
Weekday
返回指定日期為星期幾
Hour
返回指定時(shí)間量中的小時(shí)
Minute
返回指定時(shí)間量中的分鐘
Second
返回指定時(shí)間量中的秒
DateSerial
返回指定年月日的日期
TimeSerial
返回指定小時(shí)分秒的時(shí)間
DateValue
將字符串表示的日期轉(zhuǎn)化為Variant日期
TimeValue
將字符串表示的時(shí)間轉(zhuǎn)化為Variant時(shí)間
DateAdd
返回指定日期加上一定時(shí)間間隔后的日期
DateDiff
返回兩個(gè)日期的時(shí)間間隔
DatePart
返回指定日期的特定部分
字符串函數(shù)
表3-22 字符串函數(shù)功能表
函數(shù)名
功能
StrComp
兩個(gè)字符串比較
Lcase,Ucase
轉(zhuǎn)換大小寫
Space,String
返回指定長(zhǎng)度的字符串
Len
求字符串長(zhǎng)度
Lset,Rset語(yǔ)句
給字符串變量賦值,賦在左邊或右邊
Instr
子串定位
Mid
取給定字符串的子串
Left,Right
從字符串的左邊或右邊取指定長(zhǎng)度的子串
Ltrim,Rtrim,Trim
去掉字符串的前導(dǎo)空格,尾隨空格
StrConv
轉(zhuǎn)換字符串
目錄和文件函數(shù)
表表3-23 文件系統(tǒng)函數(shù)列表
函數(shù)或語(yǔ)句名
功能
ChDir
改變當(dāng)前目錄
ChDrive
改變當(dāng)前驅(qū)動(dòng)器
CurDir
返回當(dāng)前目錄
MkDir
創(chuàng)建目錄
RmDir
刪除目錄
FileCopy
拷貝文件
Kill
刪除文件
FileLen
取得文件的長(zhǎng)度(字節(jié)數(shù))
Dir
查找指定的文件和目錄
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。