計算機程式 Visual BASIC 程式設計

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

第2章 Visual Basic 6.0编程基础 (第一部分)
物件導向語言基礎 Chapter 4 認知 學完本章應了解何謂常數、變數。 了解有哪些運算式、運算子和基本輸入、輸出指令。
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
Chapter 5 遞迴 資料結構導論 - C語言實作.
Chapter 5 迴圈.
Visual Basic程序设计.
程式語言Visual Basic 變數的可視範圍
課程名稱:程式設計 授課老師:________
第3章 變數與運算子 3-1 電腦記憶體的基礎 3-2 變數的命名與宣告 3-3 VB.NET的資料型別
Visual Basic 6.0 學習範本 第三章 基本資料型態.
Visual C++ introduction
第二章 Visual Basic语言基础.
第5章 数组 Visual Basic程序设计.
2-3 基本數位邏輯處理※.
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
Java程式概觀.
Visual Basic程序设计 第八章 过程 -子程序和函数
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第12章 VBA编程 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能的扩展。Office中包含Visual Basic for Application(VBA),VBA具有与Visual.
初识Visual Basic.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
第4章 程序控制结构与算法基础.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
Visual Basic 程序设计 教师:王 杨 电话:
第3章 Visual Basic语言基础 郭清溥.
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
新觀念的 VB6 教本 第 6 章 資料型別.
Java 程式設計 講師:FrankLin.
Visual Basic程序设计.
算法与程序设计 周少品.
程式設計實習課(四) ----C 函數運用----
第三章 VB语言基础 本章重点和难点 3.1 Visual Basic 程序代码的组织方式 3.2 代码行的书写规则
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第一單元 建立java 程式.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数.
小结 郭清溥.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
ASP基礎— VBScript基本語法 張森.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
第二章、第三章错题分析.
CH05. 選擇敘述.
撰寫MATLAB基礎財務程式 柯婷瑱.
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
函數應用(二)與自定函數.
陣列與結構.
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
資料表示方法 資料儲存單位.
計算機程式設計 老師:謝孟諺 助教:楊斯竣.
Programming & Language Telling the computer what to do
變數、常數與資料型態 大綱 變數與常數 變數 資料型別 資料的輸出.
算法与Visual Basic程序基础(二)
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

計算機程式 Visual BASIC 程式設計 四海工商專校 電算中心 廖文淵 E-Mail: andres@sitc.edu.tw

Chapter 4 程式設計基礎 1. 註解、換行接續與合併陳述 2. 輸出與輸入敘述 3. 變數、資料型態 4. 運算 5. 流程圖 6. 程序及函數

1. 註解 (Comment) 程式註解符號 : ‘ 知會 Visual Basic 忽略該符號後面的內容 方便設計者易於閱讀 方便維護 程式註解符號 : ‘ 知會 Visual Basic 忽略該符號後面的內容 方便設計者易於閱讀 方便維護 ' 這是從螢幕左邊開始的程式註解 Text1.Text = “Hi!” ‘ 在文字方塊中放入文字 在同一程式行中,程式註解可以接在陳述式的後面,但也可佔據一整行

換行接續符號 一個空白後面跟著一個底線 將一個較長的陳述式分成好幾行。 容易閱讀 在同一個程式行內,不能在換行接續符號後面加上程式註 解 Data1.RecordSource = "SELECT * FROM Titles, Publishers" _ & "WHERE Publishers.PubId = Titles.PubID" _ & "AND Publishers.State = 'CA'" .. 在同一個程式行內,不能在換行接續符號後面加上程式註 解

多個陳述式合併到同一程式行 使用冒號 (:) 隔開 為了程式碼更易於閱讀,最好還是一行放置一個陳述式 Text1.Text = "Hello" : Red = 255 : Text1.BackColor = Red 為了程式碼更易於閱讀,最好還是一行放置一個陳述式

2. 輸出敘述 Print 與Cls 敘述 Cls敘述(ClearScreen): Print 敘述格式: Print 字串[,;...] Print “**Welcome**” Print 3+4+5 ? 3+4+5 ? “Hello” X=5: Y=20 Print X; “+”; Y; “=“; X+Y Print X; “-”; Y; “=“; X-Y Print “X * Y =“; X*Y 5 + 20 = 25 5 - 20 =-55 X * Y = 100 Cls敘述(ClearScreen): 清除螢幕內容

3. 變數 (Variable) 當執行應用程式期間,使用變數暫存數值。 變數必須有 可以把變數看作記憶體中存放未知數值的預留位置 變數名稱 : 用來引用該變數所包含的值 資料型態 : 決定變數可以儲存的資料種類 有效範圍 : 變數可以被引用的區域 可以把變數看作記憶體中存放未知數值的預留位置 控制項、表單、物件類別和模組亦以變數名稱表示 物件的屬性可視為此物件內的變數: 物件名稱 . 屬性

變數名稱 eg. TempVal 必須以字母開頭 不能包含句號、型態宣告字元 不能和關鍵字同名 不得超過 255 個字元 控制項、表單、物件類別和模組名稱無法超過40個字元 在同一個有效範圍內必須是唯一的 有效範圍就是變數可以被引用的區域,例如程序、表單等等 eg. TempVal Sep95Sales Im 94Sales (Error) Print (Error)

資料型態 整數 (Integer) 長整數 (Long Integer) 單倍精確浮點數 (Single Precision) 雙倍精確浮點數 (Double Precision) 貨幣 (Currency) 字串 (String) 位元組 (Byte) 日期 (Date) 布林 (Boolean) 物件 (Object) 任意資料 (Variant)

資料型態的性質

整數(Integer) 不含小數點的10進位數值資料,包括正、負整數與零 佔2Bytes 範圍: -215~ 215-1 (-32768~32767) eg. Total% = 243.57 Print Total% Sum% = 45000 (Error) 1 byte Sing bit 1111111111111111 0111111111111111 -215 215-1

長整數(Long Integer) 不含小數點的10進位數值資料,包括正、負整數與零 佔4Bytes 範圍: -231~ 231-1 (-214783648~214783647) eg. Total& = 24689751 1 byte Sing bit -231 11111111111111111111111111111111 231-1 01111111111111111111111111111111

8進位整數(Octal Integer) 表示法: 不含小數點的8進位正整數數值資料 佔2Bytes 範圍: 0~ 216-1 (0~65535) 1 byte 1 byte 0000000000000000 1111111111111111 &O0=(0)10 &O177777=(216-1)10 表示法: &O321=(321)8=(209)10 &O67==(67)8=(55)10

16進位整數(Hexal Integer) 表示法: 不含小數點的16進位正整數數值資料 佔2Bytes 範圍: 0~ 216-1 (0~65535) 1 byte 1 byte 0000000000000000 1111111111111111 &H0000=(0)10 &HFFFF=(216-1)10 表示法: &H21=(21)16=(33)10 &H105 =(105)16=(261)10

Example 4-1 Private Sub Form_Click() a% = 243.57 Print "243.57的整數為"; a% '顯示整數 Print "500 * 300 ="; 500& * 300 '顯示長整數 Print "八進位的50 = 十進位的"; &O50 '顯示八進位 Print "十六進位的50= 十進位的"; &H50 '顯示十六進位 End Sub

單倍精確浮點數數 (Single Precision) 以指數型式(科學記號)表示的10進位數值資料,包括正、負實數與零 佔 4Bytes 範圍: -3.402823E38 ~ -1.401298E-45 +1.401298E-45 ~ +3.402823E38 表示法: number E  ee ,ee表示 1 到 2 位正整數 Total! = 2.31E+12= 2.31*1012 Sum! = -4.501E-43= -4.501*10-43

Example 4-2 Private Sub Form_DblClick() a = 1.123457E+07! b = -2.468E+17 Print a '顯示正單倍精確浮點數 Print b '顯示負單倍精確浮點數 Print a + b '顯示單倍精確浮點數運算 Print a * b '顯示單倍精確浮點數運算 End Sub

雙倍精確浮點數實數 (Double Precision) 佔 8Bytes 範圍: -1.79769313486231E308 ~ -4.94065645841247E-324 4.94065645841247E-324 ~ 1.79769313486231E308 表示法: number D  eee ,eee 表示 1 到 3 位正整數 eg. Total# = 2.31D+201= 2.31*10201 Sum# = 4.501D-121= -4.501*10-121 a# = -1.2831D-005= -0.000012831

Example 4-3 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) a# = 123456789.99 b# = -1.982E+150 Print a '顯示正雙倍精確浮點數 Print b '顯示負雙倍精確浮點數 Print a + b '顯示相加運算值 Print a * b '顯示相乘運算值 End Sub

貨幣 (Currency) 佔 8Bytes 範圍: 表示法: eg. 有效位數 : 整數15位,小數 4 位 變數名稱@ -922337203685477.5808 ~ -922337203685477.5807 有效位數 : 整數15位,小數 4 位 表示法: 變數名稱@ eg. Money@ = 2589.7667 Print Money@

字串(String) 大小寫英文字母、數字、特殊符號,以 ””雙引號框住表示 大小寫英文字母、數字、特殊符號,以 ””雙引號框住表示 字串是由數個字元組成,每個字元則以ASCII code表示,佔 1 Byte (中文佔2Bytes) eg. “Hi” : 2Bytes “四海工專” : 2*4=8Bytes Print “VB”+”應用“&”程式“ expr$ = “a+b=c” “I do!” I d o ! 73 32100 111 33 ASCII Code

Example 4-4 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Cls '清除螢幕 Print “VB” & “應用” & “程式” '顯示中英字串相連 Print "24" + "68" '顯示數值字串相連 Print "24 + 68="; 24 + 68 '顯示加法運算值 End Sub

位元組 (Byte) 如果變數包含二進位資料,則將它宣告成 Byte 資料型態 不含小數點的無符號型態資料,可視為正整數 佔 1Bytes 範圍: 0~ 28-1 (0~255) eg. Dim ThisByte As Byte ThisByte = 1001

日期 (Date) 數字資料型態轉換成 Date : 佔 8 Bytes 範圍 : 西元1/1/100~ 12/31/9999 小數點左邊的數值表示日期資訊(自1990算起) 小數點右邊的數值則代表時間,午夜為 0,正午為 0.5 負數表示公元 1899 年 12 月 31 日之前的日期。 佔 8 Bytes 範圍 : 西元1/1/100~ 12/31/9999 表示法 : #date time#

Example SomeDate=# 3-1-96 13:30 # SomeDate=# March 1, 1996 1:30 pm# Now = #9/26/1998 2:00 pm# Dim t As Date t = 0.5 (1900/1/1 6:00pm) t = 31.75 (1900/1/31 9:00pm) t = 364.0 (1900/12/30 0:00pm)

布林 (Boolean) 0, -1兩個值 0:False, -1:True 若變數只包含簡單的「True/False」、「Yes/No」、 「On/Off」等資訊,則可將它宣告為 Boolean 型態 Boolean 的預設值為 False Dim blnRunning As Boolean ' 檢視磁帶是否在執行中 If Recorder.Direction = 1 Then blnRunning = True End if

物件 (Object) 以 32 位元(4 bytes)的位址來儲存 該位址可引用應用程式中或其它應用程式中的物件 Dim objDb As Object Set objDb = OpenDatabase ("c:\vb5\Biblio.mdb")

任意資料 (Variant) Variant 變數能夠儲存所有系統定義型態的資料 不必在這些資料的型態間進行轉換;Visual Basic 會自動完成任何必要的轉換 Total = “Visual Basic” Print Total Total = 245.78 print Total Total = 642000 Total = #1-5 1998 #

VarType函數

Example 4-5 Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) a = #8/11/98# If VarType(a) = 7 Then Print a; "的資料型態為日期/時間" Else Print a; "的資料型態不是日期/時間 " End If End Sub

Empty值 Variant變數指定之前,值為 Empty 可在運算式中使用它;並視為 0 或長度為零的字串 與 0、長度為零的字串 (“”) 或 Null 值都不同的特殊值 IsEmpty 函數 : 測試變數值是否為 Empty If IsEmpty (Z) Then Z = 0 .. 任何數值(包括 0、 長度為零的字串或 Null )指定給 將 Variant 變數,Empty 數值就會消失

Null值 通常用於資料庫應用程式,以表示未知的資料或遺失的資 料 用 Null 關鍵字來指定變數值為 Null。 通常用於資料庫應用程式,以表示未知的資料或遺失的資 料 用 Null 關鍵字來指定變數值為 Null。 Z = Null IsNull 函數 : 測試 Variant 變數是否包含 Null 值 If IsNull (X) And IsNull (Y) Then Else Z = 0 End If

宣告變數(1) 事先將變數的相關資訊通知給程式知道 在變數名稱之後,直接加入資料型態宣告字元 整數變數(%) : 2 Bytes Num%=-6 Y#=3.14159 Nm$=“Hello” Z!=5.931

宣告變數(2) Dim 變數名稱 [As 資料型態] 在程序內部變數,只在該程序執行時才存在 程序一結束,該變數的值也就消失了 程序中的變數值對程序來說是區域性的,即無法在一個程序中存取另一個程序中的變數 故可在不同程序中使用相同變數名稱 資料型態 Integer 整數變數 Long 長整數變數 Single 單倍精數變數 Double 雙倍精數變數 String 字串變數 Byte 位元 Date 日期 Currency 貨幣 Boolean 布林 Object 物件

隱含宣告 隱含宣告 : 在使用一個變數之前,不必先宣告這個變數 方法方便,但是如果把變數名稱拼錯了的話,會導致一個難以察覺的錯誤 Function SafeSqr (num) TempVal = Abs (num) SafeSqr = Sqr (TempVal) End Function 方法方便,但是如果把變數名稱拼錯了的話,會導致一個難以察覺的錯誤

明確宣告 明確宣告 : 須事先設定,若遇到一未明確宣告的變數名稱,會發出警告 在表單模組、一般模組或物件類別模組的宣告區塊中加入陳述式 Option Explicit 「工具」/「選項」/「編輯器」頁籤 / 「要求變數宣告」: 會在任何新模組中自動插入 Option Explicit 陳述式 但不會在已建立的模組中插入

變數的有效範圍 程序層次變數 (區域變數) 模組層次變數 Private 變數 Public 變數 (整體變數) Static 變數名稱 Dim 變數名稱 變數對於所在程序是私有的 模組層次變數 Private 變數名稱 變數對於所在模組是私有的 Public 變數 (整體變數) Public 變數名稱 變數可用於所有模組

靜態變數 (Static) 區域變數 (Dim) 靜態變數 (Static) 只有宣告它們的程序在執行時,區域變數才存在 程序執行完畢,所含區域變數的值就消失,記憶體也會被釋放 當下一次執行該程序時,它的所有變數將重新初始化 靜態變數 (Static) 在應用程式執行階段,將區域變數宣告成靜態的區域變數,其值會一直存在 語法: static 變數名稱

專案 模組 1 程序 1 程序 2 模組 2 Public A Public B Private I Private C Dim D Private G Static H 模組 2 Public E Private F

常數 為有意義的名稱,取代那些永遠不變的數值或字串 改進程式碼的可讀性和可維護性 兩種來源: 內建或系統定義的常數 : 自訂常數 : 常數名稱採用大小寫混合的格式 字首代表定義常數的物件程式庫名稱 來自 Visual Basic 物件程式庫的常數以 “vb” 開頭 vbTileHorizontal 自訂常數 : [Public|Private] Const 常數名稱[As 資料型態] = expression

4. 運算式(Expression) 運算式由運算子(operators)與運算元(operands)所組成。 A=B+C A,B,C : 運算元(operands) =,+ :運算子(operators) 一元運算子: - (負), NOT 二元運算子: +, -, *, /, \, MOD, ^, >, <, =, AND, OR, XOR, …

算術運算式(Arithmetic) +, -, *, /, \(整數除法), MOD(整數餘數), ^ Print 5+7-8 Print 42 Mod 4 Print 42.71\5.21 42.71 ==> 43 (四捨五入) 5.21 ==> 5 43\5 = 8 (取整數部分) Print 42.71 Mod 5.21 43 Mod 5 = 3

運算優先順序(Precedence) 算術運算符號優先順序為先乘除後加減,優先順序相同者由左至右運算。 ( ) ^ - (負號) *, / ( ) ^ - (負號) *, / \ MOD +,- X*((A*B)/(C*D) (X^2+Y^2)^0.5 (A*B/C)^(1/3) A*(-X*X)

Example 4-6 Private Sub Form_Click() a = 10 b = 5 c = 2 Print "a="; a '顯示a值 Print "b="; b '顯示b值 Print "c="; c '顯示c值 Print "a ^ 3 / b * c ="; a ^ 3 / b * c '顯示運算值 Print "-a \ b * c ="; -a \ b * c '顯示運算值 End Sub

關係運算式(Relation) 兩項資料比較之間之關係,成立則為真(True),以-1 表示; 若不成立則為假(False),以0 表示。 >, <, =, >=, <=, <> , Like 資料型態須相同始可比較 字串資料比較以ASCII值比較 Print 8<4 Print “BO_” < “BOY” Print 7 = 3 + 5 Print “Abc” > “ABC” Print 4 * 6 / 2 < 9 \ 4 + 12

Like (相似)關係運算式 用來比較兩個字串的相似情況 語法: 結果=比較字串 Like 樣本字串 若兩字串相符合,則為真(True),以-1 表示; 若不相符合則為假(False),以0 表示 樣本字串適用於萬用字元 eg. “aa” Like a*a ‘aaaa.....aaaa “aBc” Like a?a ‘a_a “f” Like [a-z] ‘a,b,c,d,e,f,.........z “0” Like [!0-9] ‘!0, !1, !2, !3, ......, !9 “aaa” Like a#a ‘a 0,1,2...,9 a

Example 4-7 Private Sub Form_Click() Print "40\6*2<10/5+15=";40\6*2<10/5+15 Print "(4>17)*9\7>(2<4)+10*4=";(4>17)*9\7>(2<4)+10*4 End Sub

Example 4-8 Private Sub Form_Click() Cls '清除螢幕 check1 = “tvbs” Like “tv*” ‘設定比較運算 check2 = "ABc" Like "a?a" check3 = Null Like "a" check4 = "egg5" Like "e[!a-f]?[3-6]" check5 = "f16lkk" Like "?[1-9]*" Print "check1="; check1 '印出結果 Print "check2="; check2 Print "check3="; check3 Print "check4="; check4 Print "check5="; check5 End Sub

邏輯運算式(Logic) 邏輯運算關係,成立則為真(True),以-1 表示; 若不成立則為假(False),以0 表示。 Not, And, Or, Xor, Eqv, Imp Not(A) A Not(A) T F A And B B A And B T F A

B A Or B T F A A Xor B A Eqv B A Imp B

運算優先順序(Precedence) 邏輯運算優先順序: 運算優先順序: Not > And > Or > Xor > Eqv > Imp 運算優先順序: 算術運算 > 關係運算 > 邏輯運算 (2=4-1) Or (2.5 = 5/2) 3 > 0 And 4 <> 4 Not (5 < 10) 3 + 14 * 20 Mod 4 ^ 2 Print 4 ^ 2 \ 3 Xor 8 + 6

Example 4-9 Private Sub Form_Activate() Cls Print " NOT(9>5)="; Not (9 > 5) Print "(5 > 4) And (9 > 5)="; (5 > 4) And (9 > 5) Print "(7 > 8) Or (NOT FALSE)="; (7 > 8) Or (Not False) Print "(5 > 2) Xor (9 > 10)="; (5 > 2) Xor (9 > 10) Print "(5 < 7) Eqv (8 < 11)="; (5 < 7) Eqv (8 < 11) Print "(6 < 8) Imp (7 > 11)="; (6 < 8) Imp (7 > 11) End Sub

5. 流程圖 程式設計的步驟: 瞭解問題 設計解題程序 撰寫程式 測試程式 “設計解題程序“可運用流程圖來處理 流程圖是利用一些簡單的幾何圖形線條及一些數學關係符號來描述程式處理的步驟

流程圖符號 開始、結束 輸入、輸出 處理、運算 決策 迴圈 磁碟 流程方向 報表輸出 連結點

Example 開始 結束 Private Sub Command1_Click() Cls A = Val(Text1.Text) B = Val(Text2.Text) C = Val(Text3.Text) T=(B^2-4*A*C)^0.5 X1=-(2*A+T)/B X2=-(2*A-T)/B Print X1, X2 End Sub 開始 INPUT A, B, C T=(B^2-4*A*C)^0.5 X1=-(2*A+T)/B X2=-(2*A-T)/B PRINT X1, X2 結束

6. 程序及函數 將程式區分為較小的邏輯元件,這些元件稱為程序 每一程序均為一具有完整敘述之程式 每一次程式負責執行某一特定功能 主程式負責整個程式執行的核心及連繫各次程式 程式結構圖: 主程式 程序 2 程序 1 程序 3 程序 2-1 程序 2-2 程序 2-3 程序 3-1

程式的執行流程 主程式 程序 1 程序 2 程序 2-1 程序 2-3 程序 3-1 程序 3

程序的種類 Sub 程序: Function 程序: Property 程序: 不會傳回值,可分為 會傳回值 一般程序 事件程序 Function 程序: 會傳回值 Property 程序: 可以傳回並指定值,以及設定對物件的引用

流程圖符號及程序的優點 流程圖符號: 使用程序的優點: 避免程式的重覆,節省時間及程式儲存空間 程式結構化,提高可讀性,易修改、偵錯與維護 程式模組化,一個程式中的程序,往往不必修改或只 需稍作變動,便可以成為另一個程式的構件

Sub 程序 語法: 每次呼叫程序都會執行 Sub 和 End Sub 之間的陳述式 [Private|Public][Static] Sub 程序名稱 (參數列) 敘述 End Sub 每次呼叫程序都會執行 Sub 和 End Sub 之間的陳述式 可將 Sub 程序放入一般模組、物件類別模組和表單模組中 所有模組中的 Sub 程序都預設為 Public,故在應用程式中可隨處呼叫它們 程序的引數類似變數的宣告,宣告從呼叫程序傳遞進來的 數值

一般程序 用於執行特定的工作 必須由應用程式來指定性的啟動它 (必須呼叫它) 將公共陳述式放在一個分隔的程序 (一般程序) 並由事件程序來呼叫它。這樣一來就不必重覆程式碼,也容易維護應用程式 如 Print, Load, Unload 等方法 Print 6+7, a Load Form1

事件程序(1) 通常總是處於空閒狀態,直到為回應使用者或系統引發的事件才會呼叫它 當物件識別出某一個事件的發生時,它便自動使用事件的 相對名稱來啟動該事件程序 事件程序在物件和程式碼之間建立聯繫,是附加在表單和 控制項上的 使用者的動作 作業系統 其他應用程式 應用程式本身 (程式碼引發) 物件事件 (Event) 視窗訊息 (Message) 事件程序 event procedure 引發 產生 觸發

事件程序(2) ‧一個控制項的事件程序名稱是由控制項的 (在 Name 屬性 中設定 )的實際名稱、底線 (_) 和事件名稱所組合起來 語法: Private Sub 控制項名稱_事件名稱(參數列 ) statements End Sub Private Sub Form_事件名稱(參數列 ) statements 「物件方塊」選取一個物件,並從「程序」方塊中選取一個程序,就可在「程式碼編輯器」的視窗中選取一個範本

呼叫 Sub 程序的方法 呼叫 Sub 程序必需是一個獨立的陳述式 呼叫 Sub 程序有兩種方法: Call 程序名稱(引數列) 程序名稱 引數1, 引數2, ..... 當您使用 Call 語法時,引數必須在括號內 若省略 Call 關鍵字,則也必須省略引數兩邊的括號

呼叫SUB程序 : : Call 程序名稱 [(參數列)] 程序名稱 引數列 End Sub 定義副程式(被呼叫程序) 主程式 (呼叫程序) 程序敘述 End Sub 主程式 (呼叫程序) : Call 程序名稱 [(參數列)] 程序名稱 引數列 End Sub 呼叫程序 返回

Function 程序 包含內建或內部函數,如 Val、Sqr、Cos 或 Chr 自訂 Function 程序 語法: Private|Public][Static]Function 程序名稱 (引數列) [As type] statements End Function 可讀取引數、執行一系列陳述式並改變其引數的數值 可傳回一個值給呼叫它的程序

呼叫 Function 程序的方法 在運算式中寫上它的名稱 像SUB程序的方法: Call Function名稱(引數列) Print 10 * ToDec X = ToDec If ToDec = 10 Then Debug.Print "Out of Range" X = AnotherFunction ( 10 * ToDec) 像SUB程序的方法: Call Function名稱(引數列) Function名稱 引數1, 引數2, ..... 當用這種方法呼叫函數時,會捨棄傳回值

呼叫 Function 程序 : : 程序敘述 變數=函數名稱 [(參數列)] End Sub 定義函數式(被呼叫程序) End Function 主程式 (呼叫程式) : 變數=函數名稱 [(參數列)] Call Function名稱(引數列) Function名稱 引數列 End Sub 呼叫函數 返回主程式

Sub 與 Function 程序之差異 Function 程序具有資料型態,用以決定傳回值的型態(如果 沒有 As 子句,預設的資料型態為 Variant) Function Hypotenuse (A As Integer, B As Integer) As String 透過在運算式的右邊包含函數程序名稱和引數 (returnvalue = function),來呼叫函數 可以將 procedurename 自身指定給一個變數,就可傳回這 個值。當 Function 程序傳回一個數值時,該值就成為此運 算式的一部份 strX = Hypotenuse (Width, Height)

Example strX = Hypotenuse (Width, Height) ... Function Hypotenuse (A As Integer, B As Integer) As _ String Hypotenuse = Sqr (A ^ 2 + B ^ 2) End Function .... Label1.Caption = Hypotenuse (CInt (Text1.Text), _ CInt (Text2.Text)) strX = Hypotenuse (Width, Height) ...

呼叫其它模組中的程序 在專案中的任何地方都能呼叫其它模組中的公用程序 所有表單模組的外部呼叫,都必須指定包含此程序的表單 模組 所有表單模組的外部呼叫,都必須指定包含此程序的表單 模組 如果在表單模組 Form1 中包含 SomeSub 程序,則您可以 使用下面的陳述式來呼叫 Form1 中的程序: Call Form1.SomeSub(arguments)