【正文】
本章主要內(nèi)容 Sub過程 /Function 多窗體與 Sub Main 第 7章 過 程 VB應(yīng)用程序是由過程組成的,過程是完成某種特殊功能的一組獨(dú)立的程序代碼。兩大類過程。 事件過程 Sub過程 通用過程 Function過程 事件過程是當(dāng)某個事件發(fā)生時,對該事件作出響應(yīng)的程序段,它是 VB應(yīng)用程序的主體 通用過程是獨(dú)立于事件過程之外,可供其他過程調(diào)用的程序段 過程調(diào)用示例 把相同的任務(wù)編成相對獨(dú)立的“子過程” 當(dāng)事件過程需要執(zhí)行這個任務(wù)時,可使用調(diào)用語句 (如Call)實(shí)行調(diào)用。子過程執(zhí)行完后,會返回事件過程中調(diào)用語句 Call的后續(xù)語句繼續(xù)執(zhí)行 通用過程又分為 Sub(子程序 )過程和 Function(函數(shù) )過程 調(diào)用過程 …… Call SubA …… Call SubA …… Call SubB …… 子過程 SubA 子過程 SubB 通用過程 例 使用 Sub過程的示例 1 Private Sub Form_Load() Show Call mysub1(30) Call mysub2 Call mysub2 Call mysub2 Call mysub1(30) End Sub 程序運(yùn)行結(jié)果 Private Sub mysub1(n) Print String(n, *) End Sub Private Sub mysub2() Print *。 Tab(30)。 * End Sub Sub過程 Form_Load() 事件過程 Call mysub1(30) Call mysub2 Call mysub2 Call mysub2 Call mysub2 Call mysub1(30) Mysub1過程 Mysub2過程 調(diào)用過程 在上述事件過程 Form_Load()中,通過 Call來分別調(diào)用兩個 Sub過程 在 Sub過程 mysub1(n)中, n為參數(shù) (也稱形參 ),當(dāng)調(diào)用過程 (即 Form_Load())通過 Call mysub1(30)(30稱為實(shí)參 )調(diào)用時,就把 30傳給 n,這樣調(diào)用后就輸出 30個“ *”號 過程 mysub2()不帶參數(shù),其功能是輸出左右兩邊 的“ *”號 定義 格式: [Private| Public | Static] Sub 過程名 ([參數(shù)表 ]) 語句塊 [Exit Sub] End Sub 說明: 局部 (Private)過程、全局 (公用 , Public)過程和靜態(tài) (Static)過程 [ByVal |ByRef] 變量名 [( )][As 數(shù)據(jù)類型 ] … ByVal表示該參數(shù)按值傳遞, ByRef表示該參數(shù)按地址傳遞 通過參數(shù)表傳送參數(shù) Sub過程可以獲取調(diào)用過程傳送的參數(shù),也能通過參數(shù)表的參數(shù),把計(jì)算結(jié)果傳回給調(diào)用過程 1. Sub過程的定義 Sub過程可以保存在兩種模塊中: 窗體模塊 (.frm)和 標(biāo)準(zhǔn)模塊 (.bas) 可以在代碼窗口中直接鍵入來創(chuàng)建 Sub過程 選擇“工具”菜單中的“添加過程”命令 2. Sub過程的建立 事件過程是通過事件驅(qū)動和由 系統(tǒng)自動調(diào)用 的,而 Sub過程則 必須通過調(diào)用語句實(shí)行調(diào)用 調(diào)用 Sub過程有以下兩種方法: (1)使用 Call語句 Call 過程名 ([實(shí)參表] ) (2)直接使用過程名 過程名[實(shí)參表] 例如,調(diào)用名為 SubCal Call SubCal(10) SubCal 10 3. Sub過程的調(diào)用 Private Sub Form_Load() Show Print VB的基本特點(diǎn)是: Call Sub_Cont Print 面向?qū)ο蟮目梢暬幊? Call Sub_Cont Print 事件驅(qū)動的編程機(jī)制 Call Sub_Cont Print 結(jié)構(gòu)化的設(shè)計(jì)語言 End Sub 在事件過程 Form_Load()中,有三處調(diào)用 Sub過程 Sub_Cont() Private Sub Sub_Cont() Dim resp As String Do While True resp = InputBox(是否繼續(xù) (y/n) ? ) If UCase(resp) = N Then End If UCase(resp) = Y Then Exit Do Loop End Sub 例 使用 Sub過程示例 2 因?yàn)橛?jì)算 5!和 10!都要用到階乘 n! (n!= 1 2 3 … n) 所以把計(jì)算 n!編成 Sub過程 采用 Print直接在窗體上輸出結(jié)果,程序代碼: Private Sub Form_Load() Show Dim y As Long, s As Long Call Jc(5, y) s = y Call Jc(10, y) s = s + y Print 5! + 10! =。 s End Sub 程序運(yùn)行結(jié)果: 5! + 10! = 3628920 Private Sub Jc(n As Integer, t As Long) Dim i As Integer t = 1 For i = 1 To n t = t * i Next i End Sub 注意參數(shù) n及 t的調(diào)用情況 例 計(jì)算 5! + 10! 允許用戶自定義函數(shù)過程 (又稱 Function過程 ) 1 Function過程可返回一個值給調(diào)用程序 一般語法格式: [Private | Public | Static] Function 函數(shù)名 ([參數(shù)表 ]) [As 數(shù)據(jù)類型 ] [ Exit Function] End Function 函數(shù)返回值的處理 Function過程 與 Sub過程相同 可以在“代碼窗口”中直接輸入來建立 Function過程 也可以選擇“工具”菜單中的“添加過程”命令來建立 Function過程 (選擇“函數(shù)”類型 ) 2. Function過程的建立 把求兩個數(shù)中的大數(shù)編成 Function過程,過程名為 Max 本例采用 InputBox函數(shù)輸入三個數(shù),判斷出最大數(shù)后采用Print直接輸出在窗體上。 程序代碼: Private Sub Form_Load() Show Dim a As Single, b As Single, c As Single Dim s As Single a = Val(InputBox(輸入第一個數(shù) )) b = Val(InputBox(輸入第二個數(shù) )) c = Val(InputBox(輸入第三個數(shù) )) s = max(a, b) Print 最大數(shù)是 :。 max(s, c) End Sub Function max(m, n) As Single If m n Then max = m Else max = n End If End Function 例 輸入三個數(shù),求出它們的最大數(shù) (1) 像使用 VB內(nèi)部函數(shù)一樣,只需寫出函數(shù)名和相應(yīng)的參數(shù) s = Max(a, b) Print Max(s