官术网_书友最值得收藏!

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中要寫成22的形式。

(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 本章小結

本章主要介紹了關鍵字、標識符、數據類型、變量、常量、運算符、表達式和代碼編寫規則。讀者應重點掌握變量,它是程序設計的關鍵內容,另外,良好的編程習慣也是必不可少的。

主站蜘蛛池模板: 望奎县| 舒兰市| 湟源县| 屏边| 竹山县| 墨江| 黑山县| 南雄市| 元江| 公主岭市| 洛宁县| 波密县| 昔阳县| 周口市| 萨嘎县| 房山区| 宁化县| 龙山县| 博乐市| 方正县| 忻州市| 乡宁县| 双辽市| 连城县| 太仓市| 曲沃县| 洛隆县| 松江区| 启东市| 洞头县| 深泽县| 花莲县| 兴仁县| 广水市| 临朐县| 托里县| 永修县| 白水县| 合山市| 高唐县| 和硕县|