你還記得嗎-VB中Sub子過程與函式的呼叫
在做學生管理系統中,遇到了太多太多的問題,發現了VB的學習是多麼的不牢固,即使當初耗費了大量的時間。從現在開始,將把自己遇到的那些模糊或者不懂的知識總結出來,查漏補缺,歡迎大家提出批評指正!
VB中的呼叫主要針對Sub子過程和自定義函式的呼叫。不論是Sub子過程還是函式過程,都是將一段完整的功能獨立出來,建立一個過程。在主調程式中通過呼叫過程,將需要計算的引數(實參)傳遞給過程;在過程中求得結果後再講結果返回到主調程式,從而實現程式的功能,並使程式結構更為清晰、簡潔。
一、Sub子過程的呼叫
在程式中要呼叫Sub子過程的方法有如下兩種:
Call 過程名 (實參列表) 或 過程名 [實參列表]
呼叫Sub子程式的程式段稱為主調程式。在主調程式中呼叫Sub子過程時,將使程式流程自動轉向被呼叫的Sub子過程。在過程執行完最後一行語句 End Sub 之後,程式流程將自動返回到主調程式語句的下一行繼續進行,如下圖所示:
在呼叫過程的的語句中,不僅要求實參個數與被呼叫過程形參個數一致,而且要求實參表的引數型別、引數順序與被呼叫過程形參表的引數完全一致。
二、自定義函式的呼叫形式如下:
函式名 (實參列表)
實參列表有變數名、陣列名、陣列元素名、常熟或表示式組成,在呼叫時,實參和形參的資料型別、順序、個數必須一一對應。如下圖所示:
函式呼叫只能出現在表示式中,其功能是求得到函式的返回值。
從上面兩張圖中可以看出,Sub子過程和函式過程在傳遞需要計算的引數時(實參a、b傳遞給形參x、y),兩者並沒有什麼不同。但在返回結果方面,因為函式過程可以通過函式名返回結果,因此,在函式過程中一般只需要設定接收計算引數的形參即可(圖2的形參為x、y);Sub子過程卻有所不同,由於Sub子過程名只代表名字,沒有返回值,所以必須另外設定專門的形參用於返回結果(圖1的形參為z1、z2)。
那麼,在解決一個問題時,是使用Sub子過程還是使用函式過程呢?從原則上來說,解決一個問題,既可以使用Sub子過程,也可以使用函式過程。如果是需要過程只有一個返回值,一般習慣使用函式過程,通過函式名來返回結果;如果不是為了求一個值,而是完成一些操作,或者需要返回多個值,則使用Sub子過程比較方便
補充:多窗體間資料的訪問與傳遞
①直接訪問其他窗體的控制元件屬性
在一個窗體中可以直接訪問另一個窗體上控制元件的屬性,訪問時要指明是哪一個窗體,形式為:
另一窗體名.控制名.屬性 如Text1.Text=Form1.Text1.Text
②直接訪問其他窗體中宣告的全域性變數
在窗體的通用宣告區用Public關鍵字宣告的變數,可以被工程中其他的窗體或模組所使用.需要注意的是,在使用窗體的全域性變數時,必須帶有窗體名。 格式為: 窗體名.變數名
③在標準模組中宣告全域性變數,實現資料的共享
為了實現窗體間的資料互訪,還可以在標準模組中宣告全域性變數,並以該全域性變數作為交換資料的場所。 例如:在標準模組中宣告:Public Pubx As Integer ,此時在一個窗體中對Pubx的賦值可以被另外窗體使用。