- Visual Basic學習手冊
- 鞏建華 孫秀梅 安劍等編著
- 1260字
- 2018-12-27 17:51:21
第3章 掌握Visual Basic語言基礎
(名師課堂:1小時27分)
Visual Basic 6.0是一個功能強大、使用方便、容易上手的工具,使用它編寫應用程序,熟悉Visual Basic開發環境是第一步,掌握Visual Basic語言是基礎,只有打好基礎,循序漸進地學習,實際運用時才會得心應手。本章首先介紹組成Visual Basic語言的基本元素,包括關鍵字和標識符,數據類型,變量和常量,運算符和表達式以及代碼編寫規則。
通過學習本章,讀者可以達到以下學習目的:
了解面向對象的概念;
了解VB的關鍵字和標識符;
掌握基本數據類型,了解記錄類型和枚舉類型;
掌握變量和常量;
掌握運算符和表達式;
了解代碼編寫規則。
3.1 簡述對象概念
專題講座:光盤文件\MR\Video\3\對象概念.exe
視頻速遞:詳細講解對象的概念
Visual Basic程序設計語言是基于面向對象的可視化程序設計語言,采用了一些面向對象的編程技術。在進行面向對象的程序設計前,首先要了解對象的概念及相關的屬性、方法和事件。
3.1.1 什么是對象
對象是源自于對現實世界的描述,是程序設計中相對獨立的基本實體,是代碼和數據的集合。任何事物都可以看做是“對象”。“類”是同種事物的總稱。例如:松樹是一個類,每一個松樹就是一個具體的對象;凳子是一個類,每一個具體的凳子就是一個對象;房子是一個類,每一個具體的房子就是一個對象,如圖3.1所示。

圖3.1 生活中的對象
在Visual Basic中,對象分為系統預定義對象和用戶自定義對象兩類。工具箱中的控件被創建在窗體上后成為真正的對象。在面向對象的程序設計中,每一個實體都可以稱之為對象,窗體和控件是程序設計中最常使用的對象。它可以通過屬性、方法、事件三個方面來全面地進行描述。
其中,屬性是描述對象的數據;方法告訴對象應該做的事情;事件是對象所產生的事情,事件發生時可以編寫代碼進行處理。
『名詞解釋』
對象:“對象”是一個很廣義的概念,在現實世界中的一切都可以看做是對象,比如一個人、一本書等。在計算機中,“對象”可以視為一個單元的代碼和數據的組合。對象可以是一段應用程序,如控件或窗體。Visual Basic對象具有屬性、方法和事件三個特點。
3.1.2 熟悉對象的屬性
屬性是指一個對象的性質和特性,與物體一樣,不同的對象擁有不同的特征,屬性就是以數值、字符串等形式描述這些特征的。在Visual Basic中,常見的屬性有標題(Caption)、名稱(Name)、顏色(Color)、字體大小(FontSize)、是否可見(Visible)等。這些屬性決定了對象在界面中具有的外觀及功能。在程序設計時,需要合理、正確地設置對象的屬性值。下面描述了現實世界中一個“汽車”對象的屬性,如圖3.2所示。

圖3.2 一個“汽車”對象的屬性(靜態特性)
讀者可以根據現實世界中對象的屬性來理解程序設計中對象的屬性。在Visual Basic中設置對象的屬性可以通過屬性窗口來完成,也可以在代碼窗口中通過輸入語句來進行設置。
語法:
對象名.屬性名稱=新設置的屬性值
例如,將窗體frm_main的Caption屬性值設置為“采購管理系統”,其對應的語句為:
frm_main.Caption = "采購管理系統"
編程技術:對象的屬性
屬性是一個對象所具有的靜態性質、特征。
對象屬性的設置:(1)在屬性窗口中設置;(2)在程序代碼中設置。代碼中設置格式:對象名.屬性名 = 屬性值
3.1.3 理解對象的方法
方法是對象可以執行的操作,也就是說當給對象一個命令后,對象所做出的相應動作或反應就是對象的一個方法。它是用戶可以使用對象名直接調用的通用子程序。下面描述了現實世界中一個“汽車”對象的方法,如圖3.3所示。

圖3.3 一個“汽車”對象的方法(動態特性)
根據方法是否有返回值,調用對象方法有以下兩種方式。
1.有返回值
如果使用對象的方法有返回值,則需要把參數用括號括起來,其調用語法如下:
變量名稱=對象名稱.方法名稱(參數列表)
例如,使用Point方法獲取窗體中某個位置的顏色,代碼如下:
FormColor1=Form1.Point(25,53)
學習手冊
說明 對象的方法如果有多個參數,參數之間應該用逗號分隔。
2.無返回值
如果使用的方法沒有返回值或不使用返回值,其調用語法如下:
對象名稱.方法名稱
例如,使用SetFocus方法,獲取Text2焦點,其代碼如下:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode=vbKeyReturn Then
Text2.SetFocus 'Text2獲得焦點
End If End Sub
學習手冊
注意 在調用對象方法時,若省略對象名,那么程序將把當前窗體作為對象。
編程技術:對象的方法
方法是一個對象所具有的動作和行為。
方法的設置格式:對象名.方法名稱
在Visual Basic 6.0中,方法是系統預先規定好的函數和過程。用戶只能調用方法,方法只能在代碼中使用。
3.1.4 了解對象的事件
事件是對象能夠識別并做出反應的外部刺激,主要作用是傳遞信息。在Visual Basic中,事件是由Visual Basic預先編輯完成的代碼所提供的操作。如在鍵盤上按下某鍵或鼠標的單擊操作等都稱之為一個事件。用戶編寫事件過程的程序段,只有在觸發到該事件時才會被激活。下面描述了現實世界中一個“汽車”對象的事件,如圖3.4所示。

圖3.4 一個“汽車”對象的事件
用戶的每一個動作都是通過事件反應給系統的,從而決定程序的運行流程,形成了適合圖形用戶界面編程方式的事件驅動機制。這也是Visual Basic系統的一個顯著特點。
不同的對象具有不同的事件,常見的事件有單擊(Click)、雙擊(DblClick)、改變(Change)和裝載(Load)等。
當在對象上發生了事件后,應用程序對這個事件所能做出的反應以及處理步驟就是事件過程。在Visual Basic中設計程序的主要工作就是為對象編寫事件過程的程序代碼。
語法:
Private Sub對象名稱_事件名稱() '事件響應程序代碼 End Sub
對象名稱:對象的Name屬性。
事件名稱:由Visual Basic預先定義好的賦給該對象的事件,并且該事件必須是對象所能識別的。
例如,在鼠標單擊事件下實現鎖定Text1控件,設置“刪除”、“保存”等按鈕不可用,“添加”按鈕可用。其實現的代碼如下:
Private Sub Cmd_cancel_Click()
Text1.Locked=True '鎖定文本框
Cmd_del.Enabled=False '“刪除”按鈕不可用
Cmd_save.Enabled=False '“保存”按鈕不可用
Cmd_add.Enabled=True '“添加”按鈕可用
Cmd_edit.Enabled=False '“編輯”按鈕不可用
End Sub
3.2 了解語句組成要素
專題講座:光盤文件\MR\Video\3\語句組成要素.exe
視頻速遞:詳細講解關鍵字和標識符
語句是Visual Basic程序中最小可執行單元,每一行程序都可以稱為一個語句。一個語句基本由常量、特殊符號、關鍵字和表達式組成。
3.2.1 認識Visual Basic中的關鍵字
關鍵字和標識符是Visual Basic 6.0代碼中的一部分。關鍵字是指系統使用的具有特定含義的字符(如定義變量時使用的Dim語句),不能用做其他用途。關鍵字就像已經在國際上被注冊了的各種商標,他們的圖標和名字已經被占用,其他任何企業和個人不得使用,因為該商標已經在國際上被占用。而Visual Basic 6.0中的關鍵字已經被系統所占用,并賦予特定的含義,所以我們在開發程序的過程中不能將關鍵字作為其他用途。
常用的關鍵字有Dim、Private、Sub、Public、End、If、Else、Form、Me、Single、As、Integer、Unload、Do、While、MessageBox等。
『名詞解釋』
關鍵字:Visual Basic中一些賦予特定的含義,用做專門用途的字符串稱為關鍵字。在Visual Basic集成開發環境中,會將關鍵字用特殊的方式標出。
3.2.2 掌握標識符的使用
在Visual Basic 6.0中所有的常量、變量、模塊、函數、類、對象及其屬性等都有各自的名稱,這些名稱就是標識符。因此,標識符就是指用于在編寫代碼時定義的名稱。標識符可以理解為在程序中任何需要我們自己給它起名字的地方,這些我們自己給其起的名字就是標識符,例如:常量Pi、變量person_count、函數名BubbleSort、模塊名connect_database、類名person和對象名zhangsan等。標識符就像在生活中我們每個人、每一件物品都有自己的名字一樣。
例如,在一個Visual Basic 6.0工程中有如下標識符:
◆ 工程1:表示一個工程的標識符。
◆ Form1:表示一個窗體的標識符。
◆ Class1:表示一個類模塊的標識符。
◆ Module1:表示一個模塊的標識符。
用戶也可以自己定義標識符來標示變量等的名稱,這些用戶自定義標識符需要符合一定的命名規則,就像我們起名字的時候,是把姓放在前面,名字放在后面,而國外是將名字放在前面,姓放在后面,這些都屬于命名規則。
用戶在定義標識符時需要遵守以下的原則:
(1)不能使用系統關鍵字。
(2)自定義的標識符必須以字母開頭,以數字、大小寫字母、下畫線或者$符號結尾。
(3)標識符的長度不能超過255個字符,而對于控件、窗體、模塊和類模塊等的名字則不能超過40個字符。
(4)不區分字母大小寫。
(5)在同一個作用域中不能出現同名的自定義標識符。
下面是合法標識符:
name user_age $page
下面是非法標識符:
4word String #$##
『名詞解釋』
標識符:Visual Basic 6.0中為各種常量、變量、模塊、函數、類和對象等要素命名時使用的字符序列稱為標識符。也可以理解為凡是自己可以起名字的地方都叫做標識符,都遵循標識符的命名規定。
3.3 掌握數據類型
專題講座:光盤文件\MR\Video\3\數據類型.exe
視頻速遞:詳細講解數據類型
“數據”是信息在計算機內的表現形式,也是程序的處理對象。不同類型的數據有不同的操作方式和不同的取值范圍。Visual Basic 6.0具有系統定義的基本數據類型,是Visual Basic 6.0中數據結構的基本單元。Visual Basic 6.0還有兩種完全不同的數據類型:記錄類型和枚舉類型,它們的名稱及數據項由用戶任意定義。這兩個數據類型使得Visual Basic 6.0中的數據類型得以擴展。下面給出數據類型的分類圖,如圖3.5所示。

圖3.5 數據類型分類圖
3.3.1 基本數據類型
Visual Basic 6.0提供的基本數據類型有字符型、數值型、布爾型和日期型,對于數值型數據,考慮到運算效率、所占空間及精度要求,又分為整數型、長整型、單精度型、雙精度型、貨幣型和字節型。另外,還有變體型和對象型,這兩種數據類型是實際編程過程中不常使用的。
有關基本數據類型的大體介紹如表3.1所示,其中加粗內容是常用的數據類型。
表3.1 基本數據類型

下面詳細介紹常用的4種數據類型。
1.字符型
如果一個變量或常量包含字符串,就可以將其聲明為字符型,即String類型。字符串是用雙引號括起來的若干個字符。字符串中的字符可以是計算機系統允許使用的任意字符。例如,以下都是合法的Visual Basic 6.0字符串。
"VISUAL BASIC 6.0" "Welcome to Changchun" "吉林省長春市" "1+1=?" "8888" "***" ""(空字符串)
了解了字符串,再看一下在Visual Basic 6.0中如何聲明字符型變量。
實例位置:光盤\MR\ Instance\3\3.1
【例3.1】 聲明一個字符型變量A,代碼如下。
Private A As String
然后將字符串“吉林省長春市”賦予這個變量,并用字符串函數Right取右邊3個字符,最后輸出,代碼如下。
Private Sub Form_Load() A="吉林省長春市" '給字符型變量A賦值 A=Right(A,3) '用Right函數取右邊3個字符 MsgBox A '用Msgbox函數輸出字符型變量A End Sub
按【F5】鍵,運行程序,結果為:長春市。
按照默認規定,String變量或參數是一個可變長度的字符串,隨著對字符串賦予新數據,它的長度可增可減。但也可以聲明固定長度的字符串,語法如下。
String * size
實例位置:光盤文件\MR\ Instance\3\3.2
【例3.2】 將【例3.1】中的變量A改為固定長度為4的字符型變量,代碼如下。
Private A As String*4 '聲明一個固定長度為4的字符型變量
此時將字符串“吉林省長春市”賦予這個變量,用Msgbox函數輸出,結果為“吉林省長”。這說明如果賦予字符串的長度大于4,就不是定長字符串了,則Visual Basic 6.0會直接截去超出部分的字符。反之,如果賦予字符串的長度少于4,則Visual Basic 6.0會用空格將變量A不足部分填滿。
學習手冊
說明 標準模塊中的定長字符串用Public或Private語句聲明。在窗體和類模塊中,必須用Private語句聲明定長字符串。
2.數值型
Visual Basic 6.0支持6種數值型數據類型,分別是整型(Integer)、長整型(Long)、單精度浮點型(Single)、雙精度浮點型(Double)、貨幣型(Currency)和字節型(Byte)。
如果知道變量總是存放整數(如88)而不是帶小數點的數字(如88.88),就應當將它聲明為Integer類型或Long類型。因為整數的運算速度較快,而且比其他數據類型占據的內存要少。在For…Next循環語句(將在第4章介紹)中作為計數器變量使用時,整數類型尤其重要。
浮點數值可以表示為mmmEeee或mmmDeee的形式,其中mmm是底數,而eee是指數(以10為底的冪)。用E將數值文字中的底數部分或指數部分隔開,表示該值是Single類型;同樣,用D則表示該值是Double類型。
貨幣類型(Currency)的數值保留小數點后4位和小數點前15位,適用于金額計算。
學習手冊
說明 所有數值型變量都可以相互賦值。但浮點型或貨幣型數值賦予整型變量時,Visual Basic 6.0會自動將該數值的小數部分四舍五入之后去掉,而不是直接去掉。
例如:
Dim i As Integer
i = 2.6873453453
MsgBox I
‘輸出結果為3。
字節型(Byte)數據類型是指變量中存放的是二進制數。在計算機中,經常將用來存儲一個英文字母的8個二進制數稱為是一個字節。一個英文字母無論大小寫,都占用一個字節,而一個漢字占用兩個字節的空間。
3.布爾型
若變量的值只是True/False、Yes/No、On/Off等信息,則可將其聲明為布爾型,其默認值為False。例如,定義一個布爾型變量,輸出該變量,代碼如下。
Dim mybln As Boolean
MsgBox mybln
‘輸出結果為False。
學習手冊
說明 布爾是英國的邏輯學家,為了紀念他在邏輯學方面的卓越貢獻,人們就用他的名字來標識邏輯變量。
4.日期型
日期型變量用來存儲日期或時間。可以表示的日期范圍為100年1月1日到9999年12月31日,時間則是從0:00:00到23:59:59。日期常數必須用“#”符號括起來。如果變量mydate是一個日期型變量,可以使用下面的幾種格式為該變量賦值。
mydate=#2/4/1977# mydate=#1977-02-04# mydate=#77,2,4# mydate=#February 4,1977#
以上表示的都是1977年2月4日,并且無論在代碼窗口中輸入哪條語句,Visual Basic 6.0都將其自動轉換為第一種形式,即mydate=#2/4/1977#。
實例位置:光盤文件\MR\ Instance\3\3.3
【例3.3】 賦予日期/時間變量的值與輸出的日期/時間格式不一定一致,這與系統區域和語言選項中的設置有關,例如下面的代碼。
Private Sub Form_Load()
Dim mydate As Date '定義日期型變量
mydate=#2/4/1977# ' 給變量賦值
MsgBox mydate ‘ 輸出變量
End Sub
上述代碼輸出結果為77-02-04,原因是系統區域和語言選項中的短日期的格式為yy-mm-dd。
5.對象型
對象型用于存儲程序中的對象。使用4個字節(32位地址)保存與對象有關的數據信息。
6.變體型
變體型數據類型可以存儲所有系統定義的數據類型。變體型除了具有其他數據類型的特性外,還具有三個特殊的值:Empty、Null和Error。
(1)Empty
Empty是一個和0、零長度字符串或者Null值都不同的值。變體類型的數據在沒有賦值前默認值為Empty。在使用時,可以使用IsEmpty函數來測試變量的值。
(2)Null
Null表示未知或者丟失的數據,Null具有以下特性:
◆ Null值只能賦值給變體數據,如果將其賦給非變體數據的變量,將會產生一個錯誤;
◆ 如果表達式中含有Null值,則整個表達式的計算結果為Null。
(3)Error
在變體變量中Error是一個特殊的值,用來標示已經發生過的過程中的錯誤狀態。
3.3.2 記錄類型
3.3.1節中介紹的各種數據類型是由系統設定的,下面介紹的數據類型將由用戶自定義。用戶自定義類型也稱做記錄類型,主要通過Type語句來實現,其語法格式如下。
[Private|Public]Type 數據類型名
數據類型元素名As類型名
數據類型元素名As類型名
……
End Type
數據類型名是要定義的數據類型的名字;數據類型元素名不能是數組名;類型名可以是任何基本數據類型,也可以是用戶定義的類型。
學習手冊
說明 (1)Type語句只能在模塊級使用。使用Type語句聲明了一個記錄類型后,就可以在該聲明范圍內的任何位置聲明該類型的變量。可以使用Dim、Private、Public、ReDim或Static語句來聲明記錄類型中的變量。
(2)在標準模塊中,記錄類型默認設置是公用的。可以使用Private關鍵字來改變其可見性。而在類模塊中,記錄類型只能是私有的,且使用Public關鍵字也不能改變其可見性。
(3)在Type…End Type語句塊中不允許使用行號和行標簽。
(4)用戶自定義類型經常用來表示數據記錄,該數據記錄一般由多個不同數據類型的元素組成。
實例位置:光盤文件\MR\ Instance\3\3.4
【例3.4】 下面將使用Type語句聲明一個新的數據類型Sell,然后為該類型中的各個元素賦值,最后輸出,具體實現過程如下。
創建一個Visual Basic 6.0工程,在該工程中添加一個模塊,在該模塊的聲明部分編寫如下代碼。
Type Sell name As String * 20 standard As String * 10 price As Currency End Type
在窗體的Form_Load事件過程中聲明一個Sell類型mySell,然后為其各個元素賦初值,最后輸出,代碼如下。
Private Sub Form_Load() Dim mySell As Sell my Sell.name="Epson打印機" mySell.standard = "Epson Style C65" my Sell.price=450 MsgBox "產品名稱:" & mySell.name & Chr(10) & "產品型號:" & mySell.standard & Chr(10) & "單價: " & mySell.price End Sub
按【F5】鍵,運行程序,結果如圖3.6所示。

圖3.6 消息對話框
3.3.3 枚舉類型
枚舉是為一組整數值提供便于記憶的標識符,它的作用是管理和使用常量。枚舉類型主要使用Enum語句來定義,語法如下。
[Private|Public]Enum 數據類型名
數據類型元素名 = 整型常數表達式
數據類型元素名 = 整型常數表達式
……
End Enum
其中的整型常數表達式可以是默認的,默認情況下,第一個數據類型元素取值從0開始,其余數據類型元素名依次為1,2,3,4,5,…,枚舉類型的實質就是定義一個符號常量集,并用一個名稱表示該集合。
實例位置:光盤文件\MR\ Instance\3\3.5
【例3.5】 下面用Enum語句定義一個顏色類型,其中包括一些顏色常數,可以用于設計數據庫的數據輸入窗體,代碼如下。
Public Enum myColors
myRose=&HE1E4FF ' 玫瑰紅
myGray=&H908070 ' 灰色
myBlue=&HFF901E ' 藍色
mySkyBlue=&HFFBF00 ' 天藍
my SpringGreen=&H7FFF00 '春天綠
my ForestGreen=&H228B22 '森林綠
End Enum
在窗體中調用該枚舉類型,設計文本框控件的前景色和窗體的背景顏色,關鍵代碼如下:
Private Sub Form_Load() Text1.ForeColor=myColors.myBlue '文本框前景色 Form1.BackColor=myColors.myRose '窗體的背景色 End Sub
程序的運行效果如圖3.7所示。

圖3.7 枚舉類型的使用
3.4 學習使用變量
專題講座:光盤文件\MR\Video\3\變量.exe
視頻速遞:詳細講解變量的知識
前面介紹數據類型的同時,已經簡單涉及了一些變量,這一節我們就詳細介紹一下變量的概念及聲明、變量的命名規則、變量的分類以及使用變量時的注意事項。
3.4.1 什么是變量
一個變量相當于一個容器,這個容器對應著計算機內存中的一塊存儲單元,因此,它可以保存數據。下面通過舉例進一步說明變量。
【例3.6】 有兩個存儲單元,分別為strUser和strPassword,存放的值分別為管理員、111,如圖3.8所示。

圖3.8 存儲管理員
也可以將這兩個存儲單元的值改為普通用戶、222,如圖3.9所示。

圖3.9 存儲普通用戶
例如,在計算員工加班費時,使用的計算公式為:加班費=8×加班小時數。這里面每小時的加班費用是固定的,員工加班的小時數是不同的,所以每個人的加班費也是不同的,這里面“加班小時數”和“加班費”都是變量。計算過程如圖3.10所示。

圖3.10 加班費的計算過程
綜上所述,變量也就是在程序運行時其值在不斷發生改變的量,它在程序設計中是一個非常重要、非常關鍵的內容。
『名詞解釋』
變量:Visual Basic變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域。從本質上講,變量其實是內存中的一小塊區域,使用變量名來訪問這塊區域。因此,每一個變量使用前必須先聲明,然后進行賦值,才能使用(否則系統會自動賦予初始值)。
3.4.2 掌握變量的命名規則
為了便于在程序中區分和使用變量,必須給每一個變量進行命名。在Visual Basic中,變量的命名要遵循以下規則。
(1)變量名只能由西文字母、漢字、數字及下畫線組成。
(2)變量名必須以西文字母或漢字開頭,最后一個符號可以是數據類型聲明符,如Dim a%,更多的數據類型聲明符可以參考表3.1。
(3)變量名長度可達255個字符,有效字符為40個。
(4)Visual Basic 6.0中的關鍵字不能作為變量名。例如,Print、Dim和For等都是非法變量名。
學習手冊
說明 雖然Visual Basic 6.0中的關鍵字不能作為變量名,但可以將關鍵字嵌入變量名中。例如,print是非法變量名,但print_3或print3都是合法的變量名。
(5)不能在變量名中出現標點符號、空格或者嵌入!、@、#、$、%、&等字符。
(6)變量名在變量有效的范圍內必須是唯一的,否則會出現“當前范圍內的聲明重復”的錯誤。
(7)變量名中不區分大小寫。
以上是變量的基本命名規則,在實際編程過程中,筆者建議變量名應能對變量的含義具有一定的提示作用,且能反映變量類型及變量作用域,這樣可以增強程序代碼的可讀性。例如,可以將用來保存產品名稱的變量命名為strName,保存產品價格的變量命名為curPrice,保存用戶名的全局變量命名為gstrUserName。
3.4.3 聲明變量
在Visual Basic 6.0程序中,使用變量前,一般要先聲明變量的名稱和變量的數據類型,以決定系統為變量分配的存儲單元。下面介紹幾種方式來聲明變量及其數據類型。
1.用聲明語句顯式聲明變量
使用聲明語句聲明變量,也稱顯式聲明,語句格式如下:
Dim|Private|Static|Public變量名As數據類型
其中,變量名必須符合變量的命名規則,數據類型可以是Visual Basic 6.0的基本數據類型,也可以是記錄類型或枚舉類型。
關鍵字Dim、Private、Static和Public由符號“|”隔開,表示用戶在實際聲明變量中,可以從中任選其一。但選用不同的關鍵字,在程序的不同位置所定義的變量的種類和使用范圍是不同的,這是3.4.4節將要介紹的內容。
【例3.7】 下面通過幾個例子,介紹如何顯式聲明變量。
聲明一個字符串變量、一個整型變量:
Dim Str As String Dim Int As Integer
使用數據類型的類型符號來替代As子句:
Dim Str$ Dim Int%
學習手冊
注意 變量名與數據類型符之間不能有空格。
一條Dim語句可以聲明多個變量,各變量之間以逗號隔開:
Dim Str As String , Int As Integer , Sng as Single
聲明指定字符串長度的字符型變量:
Dim Str1 As String*128
如果賦給字符串變量Str1的字符少于128個,則用空格填充變量Str1;如果賦給字符串變量Str1的字符大于128,則Visual Basic會自動截去超出部分的字符。
2.隱式聲明變量
在Visual Basic 6.0中,也可以不事先聲明而直接使用變量,這種方式稱為隱式聲明。上述使用Dim語句聲明變量的方式也可稱為顯式聲明。所有隱式聲明的變量都是變體型(Variant)數據類型,這一類型在3.3節中介紹過。
【例3.8】 聲明一個變量a,并為a賦值,代碼如下。
Dim a a=111
或直接使用:
a = 111
3.強制聲明變量(Option Explicit語句)
前面介紹了變量的兩種聲明方式,顯然隱式聲明用起來更方便,但如果變量名拼錯了,系統就會認為它是另一個新的變量,從而引起潛在的錯誤。這時如果設置了強制聲明變量,就不會出現這種情況了。因為強制聲明變量會在聲明段手動或自動地加入Option Explicit語句,如果程序中存在直接使用的變量,運行程序后,系統就會提示“變量未定義”。
下面介紹如何強制聲明變量。強制聲明變量可以在聲明段手動添加Option Explicit語句,但這種方法很費時,下面這種方法可以自動在聲明段添加Option Explicit語句,方法是:選擇“工具”→“選項”菜單命令,在“選項”對話框中,單擊“編輯器”選項卡,勾選“要求變量聲明”復選框,如圖3.11所示,此時Visual Basic 6.0會在以后的窗體模塊、標準模塊及類模塊中的聲明段自動插入Option Explicit語句,如圖3.12所示。但不會將它加入現有的模塊中,要想在現有的模塊中加入Option Explicit語句,還需要使用第一種方法,也就是在聲明段手動添加Option Explicit語句。

圖3.11 設置強制聲明變量

圖3.12 自動在聲明段加入Option Explicit語句
學習手冊
說明 如果要強制聲明變量,建議在開始程序設計時就在“選項”中設置“要求變量聲明”。
4.用DefType語句聲明變量
用DefType語句可以在標準模塊或窗體模塊的聲明部分定義變量,語句格式如下:
DefType 字母范圍
其中,Def是保留字,Type是數據類型標志,它可以是Int(整型)、Lng(長整型)、Sng(單精度型)、Dbl(雙精度型)、Cur(貨幣型)、Str(字符型)、Byte(字節型)、Bool(布爾型)、Date(日期型)、Obj(對象型)、Var(變體型)。把Def和Type寫在一起就構成了定義的類型關鍵字。
字母范圍用“字母-字母”的形式給出,例如:
DefLng i-l '凡是變量名以字母i到l開頭的變量均定義為長整型
學習手冊
注意 ① DefType語句只對它所在的模塊起作用。
② 當使用DefType語句和使用類型說明符方式定義變量發生矛盾時,類型說明符定義變量的方式總是比DefType語句優先起作用。
3.4.4 變量的作用域
一個變量被聲明后,并不是在任何地方都能使用。每個變量都有它的作用范圍,也就是作用域。例如在一個過程內部聲明的變量,只在該過程內部有效,一個模塊的通用聲明部分聲明的變量,只在該模塊內的所有過程有效,而對于使用Public語句聲明的變量,不僅對于同一模塊內的所有過程有效,甚至對于整個應用程序的所有過程也都是有效的。
在Visual Basic 6.0中允許在聲明變量時指定它的范圍,主要包括局部變量、模塊級變量和全局變量,詳細介紹如表3.2所示。
表3.2 變量的作用域

【例3.9】 下面通過實例比較局部變量和模塊級變量的作用范圍。創建一個Visual Basic 6.0工程,在窗體的Form_Load事件過程中定義一個整型變量,并為其賦值,然后在文本框控件中的值發生改變時,顯示該變量的值,代碼如下。
Private Sub Form_Load() Dim intNumber As Integer intNumber =2 End Sub Private Sub Text1_Change() intNumber = intNumber + 1 MsgBox intNumber End Sub
按【F5】鍵,運行程序,結果為1,由于變量intNumber是在Form_Load事件過程中定義的,因此決定它是一個局部變量,只在過程內部有效,而Text1_Change事件過程中的intNumber變量被當做一個新的變量,其初值為0,加1后結果為1。
將上述代碼中的Dim intNumber As Integer語句移到窗體的通用聲明部分,運行程序,再看一下結果,其結果為3,由于變量intNumber已被放在窗體的通用聲明部分,因此決定它是一個模塊級變量,即在模塊內的所有過程有效。Form_Load事件過程中變量intNumber的值為2,在Text1_Change事件過程中變量intNumber再加上1,那么結果就是3。
3.4.5 理解靜態變量的作用
在過程中,既可以使用Dim語句聲明局部變量,也可以使用Static語句聲明局部變量,并且Static語句的一般形式與Dim語句相同:
Static變量名As數據類型
使用Static語句聲明的變量稱為靜態變量,它與用Dim語句聲明的變量的不同之處在于:當一個過程結束時,過程中所用到的靜態變量的值會保留,下次再調用該過程時,變量的初值是上次調用結束時被保留的值。
對于使用Dim語句聲明的局部變量,隨過程的調用而分配存儲單元,并進行變量的初始化。一旦過程結束,變量的內容自動消失,占用的存儲單元也被釋放。因此,每次調用過程時,變量都將重新初始化。
3.4.6 處理變量同名問題
如果不同模塊中的公用變量使用同一名字,則通過同時引用模塊名和變量名在代碼中進行區分。例如,如果在Form1和Module1中都聲明了一個整型公用變量intNumber,則可以用Form1.intNumber和Module1.intNumber來區分這兩個同名的變量。
實例位置:光盤文件\MR\ Instance\3\3.10
【例3.10】 下面通過實例進一步說明同名變量在程序中是如何區分的。
新建一個工程,在工程中添加三個窗體,默認名稱為Form1、Form2和Form3。
在Form2中聲明第一個變量intX,然后在Form_Load事件過程中設置它的值。
Public intNumber As Integer ' 聲明Form2的intX變量 Private Sub Form_Load() intNumber=1 '設置Form2的intX變量的值 End Sub
在Form3中聲明第二個變量intX,它與Form2中的變量名字相同,同樣在Form_Load事件過程中設置它的值。
Public intNumber As Integer ' 聲明Form3的intX變量 Private Sub Form_Load() intNumber=2 '設置Form3的intX變量的值 End Sub
在Form1窗體中添加兩個按鈕,在它們的Click事件過程中編寫代碼,分別調用Form2和Form3窗體,并將這兩個窗體模塊中定義的變量用MsgBox顯示。
Private Sub Command1_Click() Form2.Show '調用Form2窗體 MsgBox Form2.intNumber ' 顯示Form2窗體的intX變量 End Sub Private Sub Command2_Click() Form3.Show '調用Form3窗體 MsgBox Form3.intNumber ' 顯示Form3窗體的intX變量 End Sub
按【F5】鍵,運行程序,單擊兩個命令按鈕中的每一個按鈕,將看到兩個公用變量被分別引用。
3.4.7 情景應用——實現兩個變量的交換(不借助第三個變量)
大家都知道,要想實現兩個變量的交換需要借助第三個變量,比如:有一瓶紅酒和一瓶可樂要交換,需要借助第三個瓶子。這里介紹一個不借助第三個變量來實現兩個變量交換的方法(這兩個變量是數值類型的)。下面通過一個實例講解如何實現兩個變量的交換(不借助第三個變量)。
實例位置:光盤文件\MR\ Instance\3\3.11
【例3.11】 當兩個變量都為數值變量時,可以不借助第三個變量實現兩個變量的交換。不借助第三個變量實現兩個變量互換的算法為:首先將兩個數的和減去b的值賦給b,這個值就是原來a的值,然后將兩個數的和減去新得到的b的值賦給變量a,這個b的值是原來a的值,得到的值是原來b的值。程序的設計過程如下。
新建一個標準的exe工程。
在工程中創建一個窗體,使用窗體的默認名,設置窗體的Caption屬性為“交換兩個變量的值”。
在窗體上添加4個Label控件,設置Label1的Caption屬性為“輸入a和b的值”,Label2的Caption屬性為“a”,Label3的Caption屬性為“b”,Label4的Caption屬性為空。將這幾個Label控件的BackStyel屬性設置為0-Transparent。
在窗體上添加兩個TextBox控件,命名為Txt_a和Txt_b。設置Text屬性為空。
在窗體上添加兩個CommandButton控件,使用默認名,設置Caption屬性為“交換”和“退出”。
當用戶在文本框中輸入兩個變量的值,單擊“交換”按鈕,實現將兩個變量的值交換,程序代碼如下:
Private Sub exchange() '交換 Dim a As Integer ' 定義變量a Dim b As Integer ' 定義變量b If IsNumeric(Txt_a.Text)Then ' 如果輸入的值是數值型數 a=Val(Txt_a.Text) '將其賦給變量a Else '否則 MsgBox"請輸入數字!" '彈出提示對話框 Exit Sub '退出過程 End If If IsNumeric(Txt_b.Text)Then ' 如果輸入的值是數值型的數 b=Val(Txt_b.Text) '將其賦給變量b Else '否則 MsgBox"請輸入數字!" '彈出提示對話框 Exit Sub '退出過程 End If a=a+b '將兩個數的和賦給a '將兩個數的和減去b的值賦給b,這個值就是原來的a的值 b = a – b '將兩個數的和減去新得到的b的值賦給變量a,這個b的值是原來a的值,得到的是值原來b的值 a = a – b Lbl_Info.Caption ="a的值是:"&a&" b的值是:"&b '在標簽中輸出交換的結果 End Sub
3.5 學習使用常量
專題講座:光盤文件\MR\Video\3\常量.exe
視頻速遞:詳細講解常量的知識
熟悉了變量,接下來學習常量,常量與變量正好相反,它是程序設計時,值始終不發生改變的量。本節就常量的聲明及使用進行介紹。
3.5.1 聲明常量
當程序中有需要重復使用的常量時,可以使用Const語句聲明,語法如下。
Public/Private Const<常量名>[As<數據類型>]=<常量表達式>
參數說明:
Public:可選的參數,用于聲明可在工程的所有模塊的任何過程中使用這個常量。
Private:可選的參數,用于聲明只能在包含該聲明的模塊中使用常量。
常量名:必選的參數,用于指定該常量名稱,必須是合法的Visual Basic標識符。
數據類型:可選的參數,也可以通過數據類型符號規定常量的類型。
常量表達式:必選的參數,包括常量和操作符,但不包含變量,而且計算結果總是常值。
學習手冊
注意 在程序中如果改變已定義常量的值,則會出現錯誤提示。
例如:
Const PI As Single=3.14159265357 '聲明符號常量PI代替3.14159265357 Print 3*PI '結果為:9.42477796071
編程準則:盡可能多的使用Const
Const關鍵字可以防止開發程序時錯誤的產生。例如,對于一些不需要改變的對象,使用Const關鍵字將其定義為常量,可以防止開發人員不小心修改對象的值,產生意想不到的結果。將函數返回的指針類型定義為Const指針,可以向其他人員表明不應該修改函數的返回值,如果不進行類型轉換,顯示地進行修改,會出現編譯錯誤。如果在定義函數時,不希望在函數體中修改參數值,應使用Const關鍵字將參數定義為常量參數,防止用戶修改參數值。
3.5.2 局部常量和全局常量
在模塊級的聲明中Public和Private省略的情況下,系統默認是Private。在模塊中使用Public語句聲明后的符號常量,就是一個全局常量,該常量可以在程序中所有模塊的過程中使用。同樣,用Private語句聲明過的常量就是局部常量。
例如:
Const MyVar=123 '默認情況下常量是局部的 Public Const MyString="mr" ' 全局常量 Private Const MyInt As Integer=5 '聲明局部整型常量 Const MyStr="mr",MyDouble As Double=3.1415 '在一行中聲明多個常量
學習手冊
注意 全局常量必須在標準模塊中聲明。
3.5.3 情景應用——使用自定義常量計算圓的面積
在開發程序的過程中經常會用到常量代表一個規定的值,這樣可以做到一改全改的功能,使用方便,減少出錯的幾率。下面通過一個實例講解如何使用常量進行程序開發。
實例位置:光盤文件\MR\ Instance\3\3.12
【例3.12】 本例實現了使用自定義常量計算圓的面積的功能。局部常量在所需要使用的過程中聲明,并且只能應用在該過程中,只有當該過程被程序調用時,該常量才存在,過程結束后該常量也將被內存釋放掉。本示例通過使用局部常量Pi計算一個圓的面積,將其結果顯示在“立即”窗口中。程序的設計過程如下。
新建一個標準工程。
在工程中添加一個窗體,窗體的名稱使用其默認名稱,Caption屬性設置為“計算圓的面積”,StartUpPosition屬性設置為“2-屏幕中心”。
在窗體上添加一個Label控件、一個TextBox控件和一個CommandButton控件,用于顯示、輸入圓的半徑,并計算圓的面積。
程序的運行代碼如下。
單擊窗體中的“計算”按鈕,聲明局部常量Pi,并使用常量Pi計算圓的面積,將結果在“立即”窗口中輸出。代碼如下:
Private Sub Command1_Click()
Const Pi=3.1415926 '聲明局部常量
s=Pi*2^2 '使用常量進行計算
Debug.Print s '將結果輸出到“立即”窗口
End Sub
程序的運行效果如圖3.13和圖3.14所示。

圖3.13 輸入圓的半徑

圖3.14 輸出圓的面積
3.6 掌握運算符和表達式
專題講座:光盤文件\MR\Video\3\運算符和表達式.exe
視頻速遞:詳細講解運算符和表達式的知識
在進行程序設計時,經常會進行各種運算,那么就會涉及一些運算符,而表達式是運算符和數據連接而成的式子。本章將詳細介紹運算符和表達式在程序中的應用。
3.6.1 學會使用運算符
在Visual Basic 6.0中有4種運算符,分別是算術運算符、字符串運算符、關系運算符和邏輯運算符。
1.算術運算符
算術運算符按照優先級從高到低,依次為指數運算(∧),乘法(*)和除法/運算,求余數運算(Mod),整除運算(\),加法(+)和減法(-)運算,其中整除運算只求運算結果的整數部分,例如,在Visual Basic 6.0工程的“立即”窗口中輸出5除以2,代碼如下。
Private Sub Form_Load() Debug.Print 5 \ 2 End Sub
結果為:2
算術運算符的基本用法相信您已經學會了,下面介紹使用算術運算符時需要注意的事項。(1)當指數運算(∧)與負號(?)相鄰時,負號(?)優先。
(2)運算符左右兩邊的操作數應是數值型數據,如果是數字字符或邏輯型數據,需要將它們先轉換成數值數據后,再進行算術運算。
(3)在進行算術運算時,不要超出數據取值范圍,對于除法運算,應保證除數不為零。
2.關系運算符
關系運算符用于比較運算符左右兩側表達式之間的大小關系,因此又稱為比較運算符,它的運算結果為布爾型數據,即結果為True或者False,如果其中的任何一個表達式結果為NULL,則關系運算的結果還可以是NULL。關系運算符沒有優先級的不同,因此在計算時,按照它們的出現次序,從左到右進行計算。Visual Basic 6.0中的關系運算符有:等于(=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)和不等于(<>)。
另外,還要說明兩點:
(1)對于字符型數據的比較,如果直接比較單個字符,則比較兩個字符的ASCII碼的大小,而對于兩個漢字字符,則比較兩個漢字字符的區位碼。
如果比較兩個字符串,則從關系運算符的左邊字符串的第1個字符開始,逐一對右邊字符串的對應位置上的字符進行比較(即比較對應位置上的字符的ASCII碼),其中ASCII碼值較大的字符所在的字符串大。
常見的字符值的大小比較關系如下:
“空格”<“0”<……<“9”<“A”<……<“Z”<“a”<……<“z”<“所有漢字”
(2)賦值號“=”與關系運算符“=”的區別
在書寫上它們沒有什么區別,只是含義與作用不同。賦值號“=”專用于給變量、對象屬性、數組等賦值,賦值號左邊必須是變量名、對象屬性、數組等,不能為常量或表達式。
而關系運算符“=”用于比較兩個表達式的值是否相等。關系運算符“=”的左右兩邊都可以是常量、變量或表達式。用關系運算符“=”連接形成的關系表達式不能單獨作為一條語句出現在程序中,它只能出現在其他語句或表達式中。
例如:
x=10 y=10 z=(x+10=y-100)
其中,前三個“=”都是賦值號,第3行語句中括號內的“=”是關系運算符。
3.連接運算符
連接運算符有兩個,它們是“+”和“&”。其中,“&”連接運算符用于強制將兩個表達式作為字符串連接。而“+”連接運算符則與它不同,當兩個表達式都為字符串時,將兩個字符串連接;如果一個是字符串而另一個是數字,則進行相加,結果為兩個數字相加的和。
下面舉例說明連接運算符的用法。
a=2+3 'a值為5
a="2"+"3" 'a值為“23”
a="吉林省"&"長春市" 'a值為“吉林省長春市”
a="a1"+3 '出現“類型不匹配”的錯誤提示信息
a="a1"&3 'a值為“a13”
學習手冊
注意 變量名與“&”之間一定要加一個空格。因為“&”本身還是長整型數據類型的類型符,不加空格容易出現視覺和理解上的誤差。
4.邏輯運算符
邏輯運算符包含下列運算符,將它們按照運算優先級由高到低排列為:
邏輯非(Not)、邏輯與(And)、邏輯或(Or)、邏輯異或(Xor)、邏輯等于(Eqv)及邏輯蘊涵(Imp)。邏輯運算得出的結果是布爾型值,也就是True或False。
3.6.2 了解表達式的構成
前面我們簡單地介紹了表達式是運算符和數據連接而成的式子,那么具體地說表達式就是由常量、變量、運算符、圓括號、函數等連接形成的一個有意義的運算式子。它包括算術表達式、字符串表達式、日期表達式、關系表達式和邏輯表達式。
在書寫表達式時,應注意以下幾點:
(1)表達式中所有的符號都必須一個一個并排寫在同一橫線上,不能寫成上標或下標的形式。例如,數學上的22在Visual Basic 6.0中要寫成2∧2的形式。
(2)不能省略乘號,乘號“*”必須寫。
(3)表達式中所有的括號一律使用圓括號,并且括號左右必須配對。
(4)數學表達式中表示特定含義的符號要寫成具體的數值,如π要寫成3.1415926(根據精度取小數點后的位數)。
3.6.3 運算符的優先級
一個表達式中,通常包含一種或多種運算符,這時系統會按預先確定的順序進行計算,這個順序稱為運算符的優先級。
算術運算符→連接運算符→關系運算符→邏輯運算符
學習手冊
說明 各種運算符的優先級已在講解各個運算符時介紹了,這里不再贅述。
3.7 熟悉代碼編寫規則
代碼編寫規則是養成良好編程習慣的基礎。本節主要介紹代碼編寫規則,包括對象命名規則、代碼書寫規則、處理關鍵字沖突和代碼注釋規則。
3.7.1 對象命名規則
當為對象、屬性、方法及事件命名時,應選擇易于被用戶理解的名字。名字含義越清晰,代碼的可用性越強。
這里的對象命名規則適用于:
◆ 對象;
◆ 組成對象接口的屬性、方法及事件;
◆ 屬性、方法及事件的命名參數。
具體命名規則如下。
(1)盡可能使用完整的單詞或音節。
對用戶來說,記住整個單詞比記住縮略詞更容易,例如,Window被縮略為Wind、Wn或Wnd,不如Window本身好記。下面通過兩個例子說明推薦使用的對象名稱,如表3.3所示。
表3.3 推薦使用的對象名稱(1)

如果標識符太長而需要縮略時,則盡量用完整的首音節。例如,用AltExpEval,而不用Alternate ExpressionEvaluation或AltExpnEvln。
(2)大小寫混用。
所有標識符都應混用大小寫,而不是用下畫線來分割其中的單詞。下面通過兩個例子說明推薦使用的對象名稱,如表3.4所示。
表3.4 推薦使用的對象名稱(2)

(3)使用一致的術語。
使用與接口相同的單詞,不要使用諸如HWND之類的基于匈牙利命名法的標識符命名。記住,這些代碼是要被其他用戶訪問的,因此盡量使用描述一個概念時用戶可能會采用的單詞。
(4)集合類名使用正確的復數。
對集合采用復數而不用新的名稱可以減少用戶必須記憶項的數目。這樣也簡化了對集合的命名。如表3.5所示列出了集合類名稱的一些例子。
表3.5 推薦使用的對象名稱(3)

例如,如果有一個名為Axis的類,則Axis對象的集合存儲在Axes類中。同樣,Vertex對象的集合存儲在Vertices類中。極少情況下當單數和復數的拼寫一樣時,則在其后面添加一個Collection,例如SeriesCollection。
學習手冊
注意 此命名約定可能不適用于某些集合,尤其在一組對象存在于多個集合時。例如,Mail程序可能有一個Name對象存在于多個集合中:ToList、CcList等。在這種情況下,可以將這些獨立的name集合命名為ToNames和CcNames。
(5)常數使用前綴。
選擇三四個小寫字母組成標識部件的前綴,把它用在部件類型庫中部件提供的常數名上,以及定義那些常數的Enums名上。
例如,提供貸款評估的代碼可以使用levs作為前綴。下面貸款的枚舉類型Enum使用了該前綴。(此外,這些常數包含大寫字母LT,以標識它們所屬的枚舉。)
Public Enum LoanType levsLT Mortgage=1 levsLT Commercial levsLT Consumer End Enum
(6)“動詞/對象”和“對象/動詞”。
如果創建的方法名是一個動詞及其作用的對象名的組合,則次序必須保持一致。或者在所有情況下都將動詞放在對象前面,如InsertWidget和InsertSprocket;或者總是將對象放在前面,如WidgetInsert和SprocketInsert。
兩種方法各有所長。“動詞/對象”次序創建的名稱更像日常說法,因而能更好地表示此方法的意圖。而“對象/動詞”的次序則便于將影響某一特定對象的所有方法集合到一起。
3.7.2 代碼書寫規則
代碼書寫規則如下:
(1)可將單行語句分成多行。
可以在“代碼”窗口中用續行符“ _ ”(一個空格后面跟一個下畫線)將長語句分成多行。由于使用續行符,無論在計算機上還是打印出來的代碼都變得易讀。例如,聲明一個API函數,代碼如下。
'聲明API函數用于異步打開一個文檔 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (By Val hwnd As Long,_ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ By Val nShowCmd As Long)As Long
學習手冊
注意 在同一行內,續行符后面不能加注釋。
(2)可將多個語句合并寫到同一行。
通常,一行之中有一個Visual Basic語句,而且不用語句終結符。但是也可以將兩個或多個語句放在同一行,只是要用冒號“:”將它們分開。例如,給數組連續賦值,其代碼如下。
a(0) = 11: a(1) = 12: a(3) = 13: a(4) = 14: a(5) = 15: a(6) = 16
(3)可在代碼中添加注釋。
以Rem或“'”(單引號)開頭,Visual Basic就會忽略該符號后面的內容。這些內容就是代碼段中的注釋,既方便開發者也為以后可能檢查源代碼的其他程序員提供方便。例如為下面的代碼添加注釋:
Dim a As String '定義一個字符型變量 Dim a As String : Rem定義一個字符型變量
學習手冊
注意 如果在語句行后使用Rem關鍵字,則必須在語句后使用冒號“:”與Rem關鍵字隔開,而且Rem關鍵字與注釋文字間要有一個空格。
(4)在輸入代碼時不區分大小寫。
(5)一行最多允許輸入255個字符。
3.7.3 處理關鍵字沖突
在代碼的編寫中為避免Visual Basic中元素(Sub和Function過程、變量、常數等)的名字與關鍵字發生沖突,它們不能與受到限制的關鍵字同名。
受到限制的關鍵字是在Visual Basic中使用的詞,是編程語言的一部分。其中包括預定義語句(比如If和Loop)、函數(比如Len和Abs)和操作符(比如Or和Mod)。
窗體或控件可以與受到限制的關鍵字同名。例如,可以將某個控件命名為If。但在代碼中不能用通常的方法引用該控件,因為在Visual Basic中If意味著關鍵字。例如,下面這樣的代碼就會出錯。
If.Caption=“同意” '出錯
為了引用那些與受到限制的關鍵字同名的窗體或控件,就必須限定它們,或者將其用方括號“[ ]”括起來。例如,下面的代碼就不會出錯。
MyForm.If.Caption=“同意” '用窗體名將其限定 [If].Caption=“同意” '方括號起了作用
3.7.4 了解代碼注釋規則
注釋是一種非執行語句,它不僅僅是對程序的解釋說明,同時還對程序的調用起著非常重要的作用。如利用注釋來屏蔽一條語句,當程序再次運行時,可以發現問題或錯誤。這樣大大提高了編程速度,減少了不必要的代碼重復。代碼注釋規則如下:
(1)程序功能模塊部分要有代碼注釋,簡潔明了地闡述該模塊的實現功能。
(2)程序或模塊開頭部分要有以下注釋:模塊名、創建人、日期、功能描述等。
(3)在給代碼添加注釋時,盡量使用中文。
(4)用注釋來提示錯誤信息以及出錯原因。
下面介紹幾種注釋的方法。
1.利用代碼或語句添加注釋
在Visual Basic中使用“'”符號或“Rem”關鍵字,可以為代碼添加注釋信息。“'”符號可以忽略掉后面的一行內容,這些內容是代碼段中的注釋。這些注釋主要是為了以后查看代碼時,幫助用戶快速理解該代碼的內容。注釋可以和語句在同一行出現,并寫在語句的后面,也可以獨自占據一整行。
(1)注釋占據一行,在需要解釋的代碼前。
'為窗體標題欄設置文字 Me.caption="明日科技" Rem在文本框中放歡迎詞 Text1.Text = "歡迎您使用本軟件!!!"
(2)注釋和語句在同一行并寫在語句的后面。
Me.caption="明日科技" '為窗體標題欄設置文字 Text1.Text="歡迎您使用本軟件!!!": Rem在文本框中放歡迎詞
(3)注釋占據多行,通常用來說明函數、過程等的功能信息。通常在說明前后使用注釋和“=”、“*”符號強調。例如下面的代碼:
'========================================================== '名稱:CalculateSquareRoot '功能:求平方根 '日期:2008-03-02 '單位:mingrisoft '========================================================== Function CalculateSquareRoot(NumberArg As Double) As Double If NumberArg<0 Then ' 評估參數 Exit Function '退出調用過程 Else CalculateSquareRoot =Sqr(NumberArg) '返回平方根 End If End Function
2.利用工具欄按鈕為代碼添加注釋
為了方便對大段程序進行注釋,可以通過選中兩行或多行代碼,并在“編輯”工具欄上單擊“設置注釋塊”按鈕或“解除注釋塊”按鈕
來對大段代碼塊添加或解除注釋符號“'”。設置或取消連續多行的代碼注釋塊的步驟如下。
在工具欄上單擊鼠標右鍵,在彈出的菜單中選擇“編輯”命令,將“編輯”工具欄添加到窗體工具欄中。
選中要設置注釋的代碼,然后單擊“編輯”工具欄中的“設置注釋塊”按鈕,如圖3.15所示。也可以將光標放置在需要注釋的代碼所在行,單擊“設置注釋塊”按鈕即可。

圖3.15 編輯工具欄
【例3.13】 下面使用注釋塊注釋代碼。選中需要注釋的代碼,單擊“設置注釋塊”按鈕,即可將選中的代碼全部注釋,注釋后的效果如下。
'Private Sub Command1_Click() ' Command2.Enabled=True ' Command1.Enabled=False 'End Sub
“解除注釋塊”按鈕與“設置注釋塊”按鈕功能正好相反,主要用于清除選中代碼前的“'”符號,從而解除該代碼塊的注釋。
學習手冊
注意 在使用注釋符號“'”時,不能將注釋符號“'”放在“_”續行符之后。
3.8 實戰練習
3.8.1 用“+”運算符進行加法和串聯字符串
難度系數:★★★
題目描述
在本章介紹了大量常用的運算符,其中,“+”運算符有兩種功能,一種是用于數值型數據的相加;另一種是用于連接字符串,本練習嘗試開發一個程序,要求使用“+”運算符進行加法運算和串聯字符串,效果如圖3.16所示。

圖3.16 加法運算和串聯字符串
技術指導
對于數值的相加很簡單,就是在“+”運算符的左右兩側放置被加數和加數;對于連接兩個字符串也并不難,也是在“+”運算符的左右兩側放置兩個要連接的字符串,示例代碼參考如下:
Text1.Text=45+45 '兩個整數相加 Text2.Text="45"+"45" '兩個字符串相連
緊急救援
如果您在做本例題的過程中遇到困難或疑惑,可以按照下面救援通道提供的網址獲取本例題的源碼和技術文檔。
救援通道:http://www.mrbccd.com/VisualBasic/loveVisualBasic/3.8.1
3.8.2 使用公用變量記錄當前登錄用戶
難度系數:★★★★
題目描述
在本章介紹了變量和變量的作用域,每個變量都有它的作用范圍,在一個過程內部聲明的變量,只在該過程內部有效,一個模塊的通用聲明部分聲明的變量,只在該模塊內的所有過程有效,而對于使用Public語句聲明的變量,不僅對于同一模塊內的所有過程有效,甚至對于整個應用程序的所有過程也都是有效的。
本練習嘗試開發一個程序,要求使用公用變量記錄當前登錄用戶,然后在加載下一個窗體的時候將登錄用戶的名稱顯示出來。本例要求在登錄窗體中輸入用戶名,在主窗體中顯示用戶名。程序的運行效果如圖3.17和圖3.18所示。

圖3.17 輸入正確的用戶名與密碼

圖3.18 顯示Form2窗體
技術指導
該程序首先要在登錄窗體的代碼編輯區域聲明一個公有變量(全局變量),然后將文本框中輸入的用戶名信息賦給該公有變量,最后在加載主窗體的時候調用該公有變量即可。
公有變量的聲明和示例代碼參考如下:
Public c As String Private Sub Command1_Click() Dim a As String, b As String a = "mr" b = "mrsoft" If Text2.Text = b And Text1.Text = a Then c = Text1.Text Form2.Show End If End Sub
緊急救援
如果您在做本例題的過程中遇到困難或疑惑,可以按照下面救援通道提供的網址獲取本例題的源碼和技術文檔。
救援通道:http://www.mrbccd.com/VisualBasic/loveVisualBasic/3.8.2
3.8.3 正確使用“&”和“+”
難度系數:★★★★
題目描述
字符串運算符有兩個:“&”和“+”。“&”用來強制兩個表達式做字符串連接。“+”用來求兩個數之和。如果無法確定是做加法還是做字符串連接,為了避免混淆,應使用“&”運算符進行字符串連接。
技術指導
使用運算符“&”時應注意,變量與運算符“&”間應加一個空格,否則Visual Basic先把“&”作為類型定義處理,造成“缺少語句結束”的錯誤。
Dim Mystr Mystr="mingri"&"soft" '返回“mingrisoft” Mystr="您的分數為"&100&"分" '返回“您的分數為100分” Mystr=1000&1 ' 返回“10000001”
使用“+”運算可以實現字符串的串界操作。但最好還是使用“&”運算符。因為如果“+”運算符兩邊的表達式中數據類型不一致時會報錯。如果都是字符串做“相加”,則返回串接起來的字符串。
Dim Mystr, a, b As String a =1000 b ="a1001" Mystr="mingri"&"soft" '返回“mingrisoft” Mystr="mingri"+"soft" '返回“mingrisoft” Mystr="您的分數為"+100+"分" '出錯,不允許數字與字符串使用“+”連接 Mystr=a+100+b '出錯,不允許數字與字符串使用“+”連接 Mystr=a+100 ' 返回1100 Mystr= 分數100+100 ' 返回100 Mystr=1000&1 ' 返回“10000001” Mystr="1000"+"0001" ' 返回“10000001” Mystr=1000+1 ' 返回“1001”
緊急救援
如果您在做本例題的過程中遇到困難或疑惑,可以按照下面救援通道提供的網址獲取本例題的源碼和技術文檔。
救援通道:http://www.mrbccd.com/VisualBasic/loveVisualBasic/3.8.3
3.9 本章小結
本章主要介紹了關鍵字、標識符、數據類型、變量、常量、運算符、表達式和代碼編寫規則。讀者應重點掌握變量,它是程序設計的關鍵內容,另外,良好的編程習慣也是必不可少的。
- Mastering Entity Framework Core 2.0
- Mastering Selenium WebDriver
- JMeter 性能測試實戰(第2版)
- Learning ASP.NET Core 2.0
- Mastering Python High Performance
- Visual C++應用開發
- 嚴密系統設計:方法、趨勢與挑戰
- Linux:Embedded Development
- Swift語言實戰精講
- Android應用案例開發大全(第二版)
- Python機器學習算法與應用
- Spring技術內幕:深入解析Spring架構與設計原理(第2版)
- .NET 4.0面向對象編程漫談:應用篇
- Python全棧開發:基礎入門
- 嵌入式C編程實戰