版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第四章VB程序設計第四章VB程序設計在設計一個規(guī)模較大、功能較復雜的程序時,需要按功能將程序分解成假設干個相互獨立的部件,VB稱這些部件為過程。在程序編寫時,分別對每個“過程〞編寫程序,可以簡化程序設計任務。本章主要對工程、模塊和過程進行介紹。4.1文件類型VB應用程序由擴展名為.vbp、.frm、.frx、.bas、.cls等幾種類型的文件組成。窗體文件(.frm)包含窗體、控件的描述和屬性設置,也包含窗體級的常數(shù)、變量、外部過程的聲明,以及事件過程和一般過程。如果程序沒有frm窗體文件,那么表示沒有用戶界面。窗體的二進制數(shù)據(jù)文件(.frx)含有窗體上控件的二進制屬性數(shù)據(jù)。這些文件是在創(chuàng)立窗體時自動產(chǎn)生的。4.1文件類型標準模塊文件(.bas)用于存放幾個窗體中都需要用的公共代碼,包含常數(shù)、類型、變量和過程的聲明,以及過程代碼。類模塊文件(.cls)用于建立新對象,這些新對象可以包含自定義的屬性和方法。類模塊即包含代碼又包含數(shù)據(jù),可被應用程序內的過程調用。4.1文件類型工程文件(.vbp)工程文件包含組成應用程序的所有窗體文件(.frm)、模塊文件(.bas)和其它文件,也包含環(huán)境設置選項方面的信息。工程的操作:翻開和保存工程:通過“文件〞菜單進行翻開和保存工作設置工程屬性:“工程〞菜單,“工程屬性〞對話框操作添加工程:工具欄或“文件〞菜單添加已有工程或新建工程添加多個工程可組成工程組刪除工程:“工程資源管理器〞中通過右鍵快捷菜單向工程中添加和刪除文件:工具欄或“工程〞菜單4.2過程將較為復雜的程序分割成較小的邏輯部件,這些部件稱為過程。每個過程為一段程序,一個過程可以被另一個過程調用。多個過程構成一個完整、復雜的應用程序。將應用程序分解成過程進行分別調試,可極大地簡化程序設計任務。4.2過程應用程序工程文件窗體文件多個過程標準模塊文件多個過程類模塊文件多個過程工程文件應用程序的組成:……………4.2過程過程的分類:子程序過程(SubProcedure)子程序過程沒有返回值函數(shù)過程(FunctionProcedure)函數(shù)過程具有返回值,如a=sin(x)屬性過程(PropertyProcedure)屬性過程可以返回和設置窗體、標準模塊和類模塊,也可以設置對象的屬性。VB的所有可執(zhí)行代碼必須屬于某個過程。過程的定義是平行的,不能在一個過程中定義其它過程。4.2.1Sub過程(子程序過程)Sub過程可以放在標準模塊和窗體模塊中。VB中有兩種Sub過程:事件過程通過過程事件過程VB是事件驅動的,為一個事件所編寫的程序代碼,稱為事件過程。當VB對象中的某個事件發(fā)生時,自動調用相應的事件過程。事件過程分為窗體事件過程和控件事件過程。4.2.1Sub過程(子程序過程)(1)窗體事件過程的語法:PrivateSubForm_事件名([參數(shù)列表])[局部變量和常數(shù)聲明]語句塊EndSub例如:PrivateSubForm_Click()frmText.ShowHideEndSub注意:不管窗體的名稱(Name)屬性是什么,在事件過程中只能使用“Form_事件名〞在程序代碼中對窗體的引用須要使用窗體的名稱屬性在程序有多個窗體時,如何對不同窗體的窗體事件編程?將要進行編程的窗體放在屏幕最前端(或在工程資源管理器中選中窗體),再點擊工程資源管理器中的“查看代碼〞按鈕;在代碼窗口的標題欄中顯示代碼對應的窗體。4.2.1Sub過程(子程序過程)(2)控件事件過程的語法:PrivateSub控件名_事件名([參數(shù)列表])[局部變量和常數(shù)聲明]語句塊EndSub例如:PrivateSubCommand1_Click()Text2=Text1*Text1*3.14EndSub4.2.1Sub過程(子程序過程)(3)事件過程的創(chuàng)立方法:在設計的窗體上雙擊窗體或控件,翻開“代碼編輯器〞窗口,并會出現(xiàn)該窗體或控件的默認過程代碼。單擊工程資源管理器窗口的“查看代碼〞按鈕,在對象列表框選擇對象,在“過程列表框〞選擇事件過程。根據(jù)語法要求,自己編寫事件過程。4.2.1Sub過程(子程序過程)通用過程當幾個不同的事件過程需要執(zhí)行同樣的動作時,為了不重復編寫代碼,可以采用通用過程來實現(xiàn)。要運行通用過程中的代碼,需要在事件過程對通用過程進行調用。通用過程可以保存在窗體模塊(.frm)和標準模塊(.bas)兩種模塊中。在VB中,事件過程是必要的,但通用過程不是必要的,是為了程序員方便而單獨建立的。4.2.1Sub過程(子程序過程)(1)通用過程的語法:Private和Public:用來聲明該Sub過程是局部的(Private),還是全局的(Public),系統(tǒng)默認值為PublicStatic:表示局部靜態(tài)變量。“靜態(tài)〞是指在過程運行結束后仍保存Sub過程的變量值。過程名:根據(jù)該通用過程的功能,程序員自己定義的名字。與變量的命名規(guī)那么相同,在同一模塊中過程名不能重名。[Private|Public][Static]Sub過程名([參數(shù)列表])[局部變量和常數(shù)聲明]語句塊 [ExitSub]
語句塊EndSub4.2.1Sub過程(子程序過程)(1)通用過程的語法:局部變量和常數(shù)聲明:用來聲明過程中定義的變量和常數(shù),可用Dim等語句聲明。ExitSub:使程序立即從一個Sub過程中退出,一般放在分支結構代碼中。語句塊:過程中執(zhí)行的操作,稱為子程序或過程體。EndSub:用于結束本Sub過程。注意:ExitSub與EndSub是結束本Sub過程,不是結束應用程序的運行[Private|Public][Static]Sub過程名([參數(shù)列表])[局部變量和常數(shù)聲明]
語句塊
[ExitSub]
語句塊EndSub4.2.1Sub過程(子程序過程)參數(shù)列表:類似于變量的聲明,列出從調用過程傳遞來的函數(shù)值,稱為形式參數(shù)(簡稱形參),多個形參間用“,〞隔開。形參語法:[ByVal|ByRef]變量名[()][As數(shù)據(jù)類型]ByVal:表示該參數(shù)按值傳遞ByRef:表示該參數(shù)按地址傳遞(默認值)[Private|Public][Static]Sub過程名([參數(shù)列表])[局部變量和常數(shù)聲明]語句塊 [ExitSub]
語句塊EndSub注意:即使Sub過程中的參數(shù)列表為空,過程名后的括號也不能省略【例Ex_Telephone】PrivateSubForm_Load()DimiAsIntegerFori=1To9LoadCommand1(i)Command1(i).Visible=TrueCommand1(i).Caption=iCommand1(i).Left=Command1(0).Left+800*iIfi>4ThenCommand1(i).Top=Command1(0).Top+800Command1(i).Left=Command1(0).Left+800*(i-5)EndIfNextiEndSubPrivateSubCommand1_Click(IndexAsInteger)Text1.Text=Text1.Text&Command1(Index).CaptionEndSub4.2.1Sub過程(子程序過程)PublicSubWarning(ByvalfAsinteger)……EndSub[Private|Public][Static]Sub過程名([參數(shù)列表])[局部變量和常數(shù)聲明]語句塊 [ExitSub]
語句塊EndSubPrivateSubWarning(fAsinteger)……EndSub例如:注意:Sub過程不能嵌套定義PublicSubWarning(ByvalfAsinteger)
PrivateSubWelcome() ……EndSub
EndSub4.2.1Sub過程(子程序過程)(2)通用過程的創(chuàng)立方法:方法一:翻開“代碼編輯器〞窗口后,點擊“工具〞菜單的“添加過程〞命令方法二:在“代碼編輯器〞窗口中手動創(chuàng)立4.2.2Function過程VB系統(tǒng)提供了諸多內部函數(shù),如sin()、Date()、Left()等等。用戶可以利用Function過程編寫自己的函數(shù)過程。[Private|Public][Static]Function函數(shù)名([參數(shù)列表])[As數(shù)據(jù)類型][局部變量和常數(shù)聲明]語句塊
[函數(shù)名=表達式]
[ExitFunction]
語句塊 [函數(shù)名=表達式]EndFunction注意:與Sub過程一樣,F(xiàn)unction過程也是一個獨立的過程;與Sub過程不同的是,F(xiàn)unction過程可以返回一個值到調用的過程[Private|Public][Static]Sub過程名([參數(shù)列表])[局部變量和常數(shù)聲明]語句塊 [ExitSub]
語句塊EndSub4.2.2Function過程[Private|Public][Static]Function函數(shù)名([參數(shù)列表])[As數(shù)據(jù)類型][局部變量和常數(shù)聲明]語句塊 [函數(shù)名=表達式] [ExitFunction]
語句塊
[函數(shù)名=表達式]EndFunctionAs數(shù)據(jù)類型:函數(shù)返回值的數(shù)據(jù)類型,例如sin()函數(shù)的返回值為Double型。假設省略“As子句〞,默認類型為Variant型。語句塊:描述過程的操作,稱為子函數(shù)體或函數(shù)體。函數(shù)名=表達式:在函數(shù)體中用該語句給函數(shù)賦值。如果在Function過程中省略該語句,那么返回值為數(shù)據(jù)類型的默認值。例如,數(shù)值函數(shù)返回0;字符函數(shù)返回空字符串。4.2.2Function過程[Private|Public][Static]Function函數(shù)名([參數(shù)列表])[As數(shù)據(jù)類型][局部變量和常數(shù)聲明]語句塊 [函數(shù)名=表達式]
[ExitFunction]
語句塊 [函數(shù)名=表達式]EndFunctionExitFunction語句:提前退出Function過程。在退出函數(shù)過程之前,必須保證為函數(shù)賦值,否那么出錯。4.2.2Function過程Function過程實例:計算直角三角形的斜邊長度
FunctionHypotenuse(AAsInteger,BAsInteger)AsInteger Hypotenuse=Sqr(A^2+B^2)EndFunction實例中:A、B為兩個整型的形式參數(shù)Hypotenuse函數(shù)的返回值為一個整型數(shù)函數(shù)體為賦值語句,計算兩個形參平方和的平方根4.3過程的調用PrivateSubCommand1_Click()DimYAsDouble,FAsDoubleF=Sin(10)
Y=Sin(Val(Text1.Text))Text2.Text=YEndSub語句1語句2過程1調用語句語句3語句4語句1語句2過程2調用語句語句3End過程1語句1語句2語句3End過程2事件過程過程1代碼過程2代碼過程調用的程序執(zhí)行順序:4.3.1調用Sub事件過程調用Sub過程是一個獨立的語句。Sub事件過程可由事件自動調用,或在同一模塊中的其它過程中使用調用語句調用。調用Sub過程的方法: 1.使用Call語句
語法:Call過程名[(參數(shù)列表)] 2.直接使用過程名
語法:過程名[參數(shù)列表]參數(shù)列表:在調用語句中的參數(shù)稱為實在參數(shù)(簡稱實參)。實參可以是變量、常數(shù)、數(shù)據(jù)和表達式。使用Call語句調用時,參數(shù)必須在括號內;沒有參數(shù)時,括號可省略。用過程名調用,沒有參數(shù)時必須省略參數(shù)兩邊的括號執(zhí)行調用語句時,VB將控制傳遞給被調用的Sub過程。4.3.1調用Sub事件過程PrivateSubtxtInput_LostFocus()IfIsNumeric(txtInput)=TrueThen
MsgBox"輸入的是數(shù)值",vbOKOnly,"輸入"Else
MsgBox"輸入的是文字",vbOKOnly,"輸入"EndIfEndSubPrivateSubcmdCheck_Click()CalltxtInput_LostFocusEndSubPrivateSubcmdEnd_Click()EndEndSub【例Ex_CheckN1】4.3.2調用Sub通用過程SubWarning()IfIsNumeric(txtInput)=TrueThenMsgBox"輸入的是數(shù)值",vbOKOnly,"輸入"ElseMsgBox"輸入的是文字",vbOKOnly,"輸入"EndIfEndSubPrivateSubcmdCheck_Click()
CallWarningEndSubPrivateSubtxtInput_LostFocus()
WarningEndSub【例Ex_CheckN2】注意:VB程序是事件驅動的,Sub通用過程只有在被其它事件過程直接或間接調用時才會被執(zhí)行,否那么不會被執(zhí)行。調用Function過程調用函數(shù)Function過程的方法與調用VB內部函數(shù)方法一樣,在語句中直接使用函數(shù)名,F(xiàn)unction過程可以返回一個值到調用的過程。例如:FunctionHypotenuse(AAsInteger,BAsInteger)AsInteger Hypotenuse=Sqr(A^2+B^2)EndFunctionPrivateSubForm_Click() Print10*Hypotenuse(3,4) X=Hypotenuse(3,4) IfHypotenuse(3,4)=10ThenPrint“Error〞 EndSub調用Function過程采用調用Sub過程的語法也能調用Function過程,當用這種方法調用過程時,放棄Function過程的返回值。。調用Sub過程的方法: 1.使用Call語句 語法:Call過程名[(參數(shù)列表)] 2.直接使用過程名 語法:過程名[參數(shù)列表]例如:P=MsgBox(“輸入的是數(shù)值〞,vbOKOnly,“輸入")MsgBox“輸入的是數(shù)值〞,vbOKOnly,“輸入〞FunctionHypotenuse(AAsInteger,BAsInteger)AsInteger Hypotenuse=Sqr(A^2+B^2)EndFunctionPrivateSubForm_Click() Print10*Hypotenuse(3,4) X=Hypotenuse(3,4) IfHypotenuse(3,4)=10ThenPrint“Error〞 EndSub4.4參數(shù)的傳遞在調用一個有參數(shù)的過程時,參數(shù)是在本過程有效的局部變量,通過“形參和實參結合〞傳遞信息。實現(xiàn)調用過程的實參與被調用過程的形參之間的數(shù)據(jù)傳遞。數(shù)據(jù)有按值傳遞和按地址傳遞兩種方式。形參:在被調用過程中的參數(shù)是形參。實參:是在主調過程中的參數(shù)。4.4.1形參和實參語句1語句2過程1調用語句語句3語句4語句1語句2語句3End過程14.4.1形參和實參在過程定義語句中的參數(shù)列表為形參列表,在過程被調用之前,形參未被分配內存,只是說明形參的類型和在過程中的作用在過程調用語句中的參數(shù)列表為實參列表,在過程調用時實參將數(shù)據(jù)傳遞給形參例如:FunctionHypotenuse(AAsInteger,BAsInteger)AsInteger Hypotenuse=Sqr(A^2+B^2)EndFunction
PrivateSubForm_Click() DimxAsInteger,yAsInteger,CAsinteger x=Val(Text1):y=Val(Text2) C=Hypotenuse(x,y) EndSub4.4.1形參和實參形參列表和實參列表的對應變量名可以不同。實參與形參的個數(shù)、順序和數(shù)據(jù)類型必須相同。形參與實參的數(shù)據(jù)傳遞是按位置結合的,即第1個實參與第1個形參結合,第2個實參與第2個形參結合,依此類推。形參與實參必須是一一對應的關系,否那么編譯出錯。例如:FunctionHypotenuse(AAsInteger,BAsInteger)AsInteger Hypotenuse=Sqr(A^2+B^2)EndFunction
PrivateSubForm_Click() DimxAsInteger,yAsInteger,CAsinteger x=Val(Text1):y=Val(Text2) C=Hypotenuse(x,y) EndSubC=Hypotenuse(x):D=Hypotenuse(x,y,10)4.4.1形參和實參例如:FunctionHypotenuse(AAsInteger,B)AsInteger Hypotenuse=Sqr(A^2+B^2) EndFunction
PrivateSubForm_Click() DimxAsSingle,yAsSingle,CAsinteger x=10.5:y=5.8
C=Hypotenuse(10.5,5.8) C=Hypotenuse(x,y) EndSub如果沒有聲明形參的數(shù)據(jù)類型,那么默認為Variant型數(shù)據(jù)。對于實參數(shù)據(jù)類型那個與形參不一致時,VB會先將實參進行數(shù)據(jù)轉換,然后將轉換值傳遞給形參。注意:這種數(shù)據(jù)轉換只適用于常量的轉換。4.4.1形參和實參形參可以使用可選參數(shù),在參數(shù)列表中使用Optional關鍵字。當使用可選參數(shù)后,形參與實參不必一一對應,在實參列表中缺省的參數(shù)取值為該數(shù)據(jù)類型的默認值。形參與實參是相對的概念。例如:FunctionHypotenuse(OptionalAAsInteger,OptionalBAsInteger)AsInteger
y=Sin(A)
Hypotenuse=Sqr(A^2+B^2) EndFunction
PrivateSubForm_Click() DimxAsInteger,yAsInteger,CAsinteger x=Val(Text1):y=Val(Text2) C=Hypotenuse(x,y) EndSubC=Hypotenuse(x):C=Hypotenuse(,x)4.4.2參數(shù)按值傳遞和按地址傳遞在VB程序進行過程調用時,參數(shù)的傳遞有按值傳遞(PassedByValue)和按地址傳遞(PassedByReference)兩種方式。1按值傳遞參數(shù)參數(shù)按值傳遞使用ByVal關鍵字。例如:PublicSubWarning(ByvalfAsinteger)……EndSub4.4.2參數(shù)按值傳遞和按地址傳遞1按值傳遞參數(shù)按值傳遞參數(shù)時,VB給傳遞的形參分配一個臨時的內存單元,將實參的值傳遞到這個臨時單元。實參向形參傳遞是單向的。如果在被調用過程中改變了形參值,不會影響實參變量本身。當被調用過程結束返回主調過程時,VB將釋放形參的臨時存儲單元。4.4.2參數(shù)按值傳遞和按地址傳遞PrivateSubcmdStart_Click()Dima,b,cAsIntegera=Val(txtA.Text)b=Val(txtB.Text)txtMax=Max(a,b)txtResultA.Text=atxtResultB.Text=bEndSubPrivateFunctionMax(ByValxAsInteger,ByValyAsInteger)DimzAsIntegerIfx<yThenz=x:x=y:y=zEndIfMax=xtxtX.Text=x:txtY.Text=yEndFunction【例Ex_Max】4.4.2參數(shù)按值傳遞和按地址傳遞2按地址傳遞參數(shù)定義按地址傳遞參數(shù)可使用ByRef關鍵字,或不使用關鍵字。例如:PublicSubWarning(ByReffAsinteger)……EndSub
PublicSubWarning(fAsinteger)……EndSub4.4.2參數(shù)按值傳遞和按地址傳遞2按地址傳遞參數(shù)按地址傳遞參數(shù),是指把形參變量的內存地址傳遞給被調用的過程。形參、實參具有相同的地址,即形參、實參共享同一段存儲單元。在被調用過程中改變形參的值,那么相應實參的值也被改變。如果在過程調用語句中的實參是參數(shù)或表達式,那么VB用按值傳遞的方法處理。4.4.2參數(shù)按值傳遞和按地址傳遞PrivateFunctionMax(xAsInteger,yAsInteger)DimzAsIntegerIfx<yThenz=x:x=y:y=zEndIfMax=xtxtX.Text=x:txtY.Text=yEndFunctionPrivateSubcmdStart_Click()Dima%,b%,c%a=Val(txtA.Text)b=Val(txtB.Text)txtMax=Max(a,b)txtResultA.Text=atxtResultB.Text=bEndSub【例Ex_Max】4.4.2參數(shù)按值傳遞和按地址傳遞【例Ex_MulSum】計算3!+2!+1!PrivateFunctionMultiply(nAsInteger)AsIntegerMultiply=1DoWhilen>0Multiply=Multiply*nn=n-1LoopEndFunctionPrivateSubForm_Click()DimSumAsInteger,iAsIntegerFori=3To1Step-1Sum=Sum+Multiply(i)NextiPrint"Sum=";SumEndSub4.4.3數(shù)組參數(shù)數(shù)組參數(shù)是指在定義過程時,可以定義數(shù)組作為過程的形參。語法:形參數(shù)組名()[As數(shù)據(jù)類型]形參為數(shù)組時,過程調用時的實參必須也是數(shù)組。實參列表中的數(shù)組不需要用“()〞。數(shù)組的參數(shù)傳遞只能按地址傳遞,形參與實參共用同一段內存單元。4.4.3數(shù)組參數(shù)【例Ex_AverScore】計算正式員工和臨時員工的平均工資PrivateSubcmdStart_Click()DimSalary1(5)AsSingle,Salary2(8)AsSingleSalary1(0)=1900:Salary1(1)=1970:Salary1(2)=1915Salary1(3)=1600:Salary1(4)=1655Salary2(0)=2675:Salary2(1)=2780:Salary2(2)=2715Salary2(3)=2540:Salary2(4)=2990Salary2(5)=2770:Salary2(6)=2895:Salary2(7)=2765txtS1.Text=Int(Average(Salary1,5)*100)/100txtS2.Text=Int(Average(Salary2,8)*100)/100EndSubPrivateFunctionAverage(stuArray()AsSingle,nAsInteger)AsSingleDimiAsIntegerDimaverAsSingle,sumAsSingleFori=0Ton-1sum=sum+stuArray(i)Nextiaver=sum/nAverage=averEndFunction賦初始值Salary1為臨時員工Salary2為正式員工調用Average函數(shù)計算平均工資,并在文本框中顯示計算工資總和對象參數(shù)VB中對象也可以作為形參,將對象向被調用過程傳遞。對象的傳遞只能按地址傳遞。對象的類型聲明為“Control〞或控件類型,如:“Lable〞、“Form〞。對象參數(shù)PrivateSubcmdEmployee_Click(IndexAsInteger)CallfrmSelect(frmSecond,cmdEmployee(Index).Caption)CalllabSelect(frmSecond.Label1,cmdEmployee(Index).Caption)EndSubPrivateSubfrmSelect(FAsForm,cmdCapAsString)F.Caption=cmdCap&"人員管理"EndSubPrivateSublabSelect(LAsLabel,cmdCapAsString)L.Caption="歡送進入"&Chr(13)&cmdCap&"人員管理"L.FontSize=16L.FontBold=TrueL.Visible=TruefrmSecond.ShowfrmFirst.HideEndSub【例Ex_FormArgu1】創(chuàng)立兩個窗體的人員管理系統(tǒng)4.5遞歸過程在VB中Sub過程可以進行遞歸調用,即在過程中可以直接或間接地調用過程本身。PrivateFunctionFNC(xasInteger)DimyAsInteger,zAsSingle……z=FNC(y)……EndFunction這種遞歸結構會使過程進入無限死循環(huán)?遞歸程序的編程方法:
確定遞歸公式
遞歸的結束條件
采用條件結構編寫程序4.5遞歸過程【例Ex_MulN1】計算n的階乘1遞歸的形式n!=n×(n-1)×(n-2)×……×2×1
可以寫成:n!=n×(n-1)!(n-1)!=(n-1)×(n-2)!……遞歸公式為:n!=n×(n-1)!2遞歸的結束條件n=0或1時n!=14.5遞歸過程【例Ex_MulN1】計算n的階乘PrivateSubForm_Click()DimMAsInteger,iAsIntegeri=InputBox("請輸入一個正整數(shù)")M=Muln(i)Print"M=";MEndSubPrivateFunctionMuln(nAsInteger)AsIntegerIfn=0Orn=1ThenMuln=1ElseMuln=Muln(n-1)*nEndIfEndFunctionPrivateFunctionMuln(nAsInteger)AsIntegerSelectCasenCase0Or1Muln=1CaseIs>1Muln=Muln(n-1)*nEndSelectEndFunction4.6變量和過程的作用范圍4.6.1變量的作用范圍變量的作用范圍是指變量有效的范圍。在VB中可分為過程級變量、模塊級變量和全局變量三種。1過程級變量:過程級變量只在聲明它們的過程中才有效,也稱為局部變量。用戶無法在其他過程中訪問或改變變量的值。
過程級變量的定義方法:Dim變量名As數(shù)據(jù)類型Static變量名As數(shù)據(jù)類型4.6.1變量的作用范圍PrivateFunctionMax(xAsInteger,yAsInteger)DimzAsIntegerIfx<yThenz=x:x=y:y=zEndIfMax=xtxtX.Text=x:txtY.Text=yEndFunction對于臨時的計算,適合聲明為局部變量。不同過程中的局部變量可以重名。在過程中使用Dim語句定義的變量都是局部變量。4.6.1變量的作用范圍2模塊級變量:模塊級變量對該模塊的所有過程都有效。在模塊中的任何過程都可以使用該變量。
模塊級變量的定義方法:Dim變量名As數(shù)據(jù)類型Private變量名As數(shù)據(jù)類型4.6.1變量的作用范圍3全局變量:全局變量的作用范圍是應用程序的所有過程,也稱為共用變量。
全局變量的定義方法:Public變量名As數(shù)據(jù)類型4.6.1變量的作用范圍【例Ex_FormArgu2】人員管理系統(tǒng)【例Ex_FormArgu2】人員管理系統(tǒng)首先創(chuàng)立2個窗體文件和一個標準模塊文件。
給全局變量賦值窗體2內標簽控件顯示的內容窗體2標題欄顯示的內容計算平均值的函數(shù)過程4.6.2靜態(tài)變量變量除了作用范圍外,還有存活期的概念,即變量能夠保持其值的時間。模塊級變量和全局變量的存活期是整個應用程序的運行期間。在過程中用Dim語句定義的局部變量僅當本過程執(zhí)行期間存在。當過程執(zhí)行完畢,變量的存儲空間被釋放,在下一次執(zhí)行該過程時所有局部變量將重新初始化??梢允褂肧tatic語句將局部變量定義為靜態(tài)局部變量,這樣過程結束后保存變量的值,即不釋放變量占用的內存單元。StaticSsAsIntegerDimTtAsDouble4.6.2靜態(tài)變量【例Ex_Plus】PrivateStaticFunctionFac(nAsInteger)DimfAsIntegerf=f+nFac=fEndFunctionPrivateSubForm_Click()DimiAsIntegerFori=1To5Print"∑";i&"="&Fac(i)NextiEndSub在過程定義語句中使用Static關鍵字,那么過程中定義的所有變量為靜態(tài)局部變量。在點擊窗體的事件過程中,通過For循環(huán)結構共調用了5次Fac函數(shù)過程。因為采用了靜態(tài)變量,每次調用結束后,f的值被保存。假設定義的不是靜態(tài)變量運行結果不同。將f設為模塊級變量,運行結果相同。但模塊內所有過程都能對f值進行修改,故容易出錯。4.6.3過程的作用范圍1過程的有效范圍:Sub過程和Function過程的作用范圍有全局過程和局部過程2種。通過Public和Private關鍵字定義。PrivateSub過程名〔參數(shù)列表〕僅在本模塊才能訪問PublicSub過程名〔參數(shù)列表〕程序的所有模塊都能訪問4.6.3過程的作用范圍2過程的外部調用:外部調用是指調用其他模塊中的全局過程。(1)調用窗體模塊中的過程:必須以窗體名作為調用的前綴語法:Call窗體名.全局過程名[〔實參列表〕]例如:在窗體Form2中定義一個全局過程Sub1,在窗體1中調用該過程。PrivateSubForm_Click()CallForm2.Sub1EndSub4.6.3過程的作用范圍(2)調用標準模塊中的過程:語法:Call[標準模塊名.]全局過程名[〔實參列表〕]假設在程序中過程名是唯一的,那么調用時不用加模塊名。假設兩個標準模塊中含有同名的全局過程,那么在模塊外調用必須加標準模塊名作為前綴。例如:CallModule2.Sub14.6.4使用同名的變量在VB中允許不同應用范圍內使用多個同名的變量,例如不同過程中出現(xiàn)同名的局部變量,局部變量與模塊變量同名等情況。1不同模塊中的全局變量同名:如果不同模塊中的全局變量使用同一名字,在引用時需要用“模塊名.變量名〞引用。例如:標準模塊Module1PublicSsAsIntegerSs=1Module2.Ss=2標準模塊Module2PublicSsAsIntegerSs=1Module1.Ss=24.6.4使用同名的變量2全局變量與局部變量同名:全局變量與局部變量同名時,局部變量在其所在過程內有效;在其他范圍內全局變量有效。例如:窗體模塊Form1PrivateSubForm_Click()
DimSsAsInteger
Ss=1EndSubPrivateSubcmd1_Click()
Ss=1EndSub標準
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度EPS環(huán)保設施施工合同
- 凝血系統(tǒng)課件教學課件
- 2024年度婚姻心理咨詢服務協(xié)議
- 2024年全球互聯(lián)網(wǎng)金融服務協(xié)議
- 2024年廢舊書籍收購協(xié)議
- 2024代理授權協(xié)議合同租房合同模板
- 洗手絹課件教學課件
- 2024年度通信網(wǎng)絡建設與維護合同
- 2024機械使用合同
- (2024版)網(wǎng)絡安全系統(tǒng)設計與實施合同
- GB 20052-2024電力變壓器能效限定值及能效等級
- 手術切口感染PDCA案例
- 依托國家中小學智慧教育平臺開展有效教學的研究課題申報評審書
- 小學大思政課實施方案設計
- 供應室消防應急預案演練
- 校運會裁判員培訓
- 潮濕相關性皮炎的護理
- 洪恩識字配套字庫完整版識字啟蒙200字-生字組詞句子完整版可打印-點讀指讀
- 幼兒園園長的幼教教研與項目管理
- 2024年黑龍江建筑職業(yè)技術學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 鐵路邊坡水害分析報告
評論
0/150
提交評論