Access基礎(chǔ)與應(yīng)用教程 第8章 模塊與VBA程序設(shè)計_第1頁
Access基礎(chǔ)與應(yīng)用教程 第8章 模塊與VBA程序設(shè)計_第2頁
Access基礎(chǔ)與應(yīng)用教程 第8章 模塊與VBA程序設(shè)計_第3頁
Access基礎(chǔ)與應(yīng)用教程 第8章 模塊與VBA程序設(shè)計_第4頁
Access基礎(chǔ)與應(yīng)用教程 第8章 模塊與VBA程序設(shè)計_第5頁
已閱讀5頁,還剩231頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 為了能解決一些實(shí)際為了能解決一些實(shí)際開發(fā)活動中的復(fù)雜的數(shù)據(jù)開發(fā)活動中的復(fù)雜的數(shù)據(jù)庫應(yīng)用問題,庫應(yīng)用問題,AccessAccess數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)提供了系統(tǒng)提供了“模塊模塊”對象對象來解決此類難題。本章主來解決此類難題。本章主要介紹要介紹AccessAccess數(shù)據(jù)庫的模塊數(shù)據(jù)庫的模塊的基本概念及的基本概念及VBAVBA語言的語言的程序設(shè)計。程序設(shè)計。退出退出8.1 8.1 模塊概述模塊概述8.2 VBA8.2 VBA程序設(shè)計概述程序設(shè)計概述8.3 VBA8.3 VBA編程環(huán)境編程環(huán)境VBEVBE窗口窗口8.4 VBA8.4 VBA編程基礎(chǔ)編程基礎(chǔ)9.5 VBA9.5 VBA程序語句程序語句8

2、.6 VBA8.6 VBA中的常用操作方法中的常用操作方法8.7 VBA 8.7 VBA 程序調(diào)試和錯誤處理程序調(diào)試和錯誤處理 模塊是模塊是 Access 數(shù)據(jù)庫中的一個數(shù)據(jù)庫對象,數(shù)據(jù)庫中的一個數(shù)據(jù)庫對象,它以它以VBA(Visual Basic for Application)語言)語言為基礎(chǔ)編寫。通俗來說,模塊是為基礎(chǔ)編寫。通俗來說,模塊是 Access 數(shù)據(jù)庫數(shù)據(jù)庫中用于保存中用于保存VBA程序代碼的容器。模塊基本上是程序代碼的容器。模塊基本上是由聲明、語句和(由聲明、語句和(Sub 和和 Function)過程組成)過程組成的集合,它們作為一個已命名的單元存儲在一起,的集合,它們作為

3、一個已命名的單元存儲在一起,對對 VBA程序代碼進(jìn)行組織。程序代碼進(jìn)行組織。 Access有兩種類型的模塊:標(biāo)準(zhǔn)模塊和類有兩種類型的模塊:標(biāo)準(zhǔn)模塊和類模塊。模塊。1標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊 標(biāo)準(zhǔn)模塊包含與任何其他對象都無關(guān)的常規(guī)過程,標(biāo)準(zhǔn)模塊包含與任何其他對象都無關(guān)的常規(guī)過程,以及可以從數(shù)據(jù)庫任何位置運(yùn)行的經(jīng)常使用的過程。以及可以從數(shù)據(jù)庫任何位置運(yùn)行的經(jīng)常使用的過程。在標(biāo)準(zhǔn)模塊中,可以放置希望供整個數(shù)據(jù)庫的其他過在標(biāo)準(zhǔn)模塊中,可以放置希望供整個數(shù)據(jù)庫的其他過程使用的程使用的Sub過程和過程和 Function 過程。過程。 標(biāo)準(zhǔn)模塊中的公共變量或公共過程具有全局特性,標(biāo)準(zhǔn)模塊中的公共變量或公共過程具有

4、全局特性,其作用范圍在整個應(yīng)用程序里,生命周期是伴隨著應(yīng)其作用范圍在整個應(yīng)用程序里,生命周期是伴隨著應(yīng)用程序的運(yùn)行而開始、關(guān)閉而結(jié)束。用程序的運(yùn)行而開始、關(guān)閉而結(jié)束。 類模塊是可以包含新對象的定義的模塊。一個類的每類模塊是可以包含新對象的定義的模塊。一個類的每個實(shí)例都新建一個對象。個實(shí)例都新建一個對象。 窗體模塊和報表模塊都是類模塊,它們從屬于各自的窗體模塊和報表模塊都是類模塊,它們從屬于各自的窗體和報表。窗體模塊和報表模塊通常都含有事件過程,窗體和報表。窗體模塊和報表模塊通常都含有事件過程,而過程的運(yùn)行用于響應(yīng)窗體或報表上的事件。窗體模塊和而過程的運(yùn)行用于響應(yīng)窗體或報表上的事件。窗體模塊和報

5、表模塊中的過程可以調(diào)用標(biāo)準(zhǔn)模塊中已經(jīng)定義好的過程。報表模塊中的過程可以調(diào)用標(biāo)準(zhǔn)模塊中已經(jīng)定義好的過程。 為窗體或報表創(chuàng)建第一個事件過程時,為窗體或報表創(chuàng)建第一個事件過程時,Access 將自將自動創(chuàng)建與之關(guān)聯(lián)的窗體模塊或報表模塊。動創(chuàng)建與之關(guān)聯(lián)的窗體模塊或報表模塊。 窗體模塊和報表模塊具有局部特性,其作用范圍局限窗體模塊和報表模塊具有局部特性,其作用范圍局限在所屬窗體或報表內(nèi)部,而生命周期則是伴隨著窗體或報在所屬窗體或報表內(nèi)部,而生命周期則是伴隨著窗體或報表的打開而開始、關(guān)閉而結(jié)束。表的打開而開始、關(guān)閉而結(jié)束。 模塊是裝著模塊是裝著 VBA 代碼的容器。一個模塊包含一個聲明代碼的容器。一個模塊

6、包含一個聲明區(qū)域,包含一個或多個過程。如圖區(qū)域,包含一個或多個過程。如圖9-1所示。所示。 過程是模塊的單元組成,用過程是模塊的單元組成,用 VBA 代碼編寫而成。過程代碼編寫而成。過程分為分為 Sub 過程和過程和 Function 過程兩種類型。過程兩種類型。 聲明部分主要包括:聲明部分主要包括:Option聲明、變量或常量或自定義聲明、變量或常量或自定義數(shù)據(jù)類型的聲明。數(shù)據(jù)類型的聲明。 模塊中可以使用的模塊中可以使用的 Option 聲明語句包括:聲明語句包括:(1)Option Base 1 聲明模塊中數(shù)組下標(biāo)的默認(rèn)下界為聲明模塊中數(shù)組下標(biāo)的默認(rèn)下界為1,不聲明則默認(rèn)下,不聲明則默認(rèn)下

7、界為界為 0。(2)Option Compare Database 聲明模塊中需要字符串比較時,將根據(jù)數(shù)據(jù)庫的區(qū)域聲明模塊中需要字符串比較時,將根據(jù)數(shù)據(jù)庫的區(qū)域 ID確定的排序級別進(jìn)行比較;不聲明則按字符確定的排序級別進(jìn)行比較;不聲明則按字符 ASClI 碼進(jìn)行比碼進(jìn)行比較。較。(3)Option Explicit 強(qiáng)制模塊用到的變量必須先進(jìn)行聲明。強(qiáng)制模塊用到的變量必須先進(jìn)行聲明。此外,有關(guān)變量或常量的聲明的語句格式將在節(jié)介紹。此外,有關(guān)變量或常量的聲明的語句格式將在節(jié)介紹。 Sub過程又稱為子過程。執(zhí)行一系列操作,無返回過程又稱為子過程。執(zhí)行一系列操作,無返回值。值。 Sub過程的定義格式

8、如下:過程的定義格式如下:Sub 過程名過程名(形參列表形參列表) VBA程序代碼程序代碼End Sub VBA 提供了一個關(guān)鍵字提供了一個關(guān)鍵字 Call,可以調(diào)用該子過程。,可以調(diào)用該子過程。此外,可以引用該過程名來調(diào)用該子過程,此時,過程此外,可以引用該過程名來調(diào)用該子過程,此時,過程名后不能帶有一對圓括號。名后不能帶有一對圓括號。 Function過程又稱為函數(shù)過程。執(zhí)行一系列操作,過程又稱為函數(shù)過程。執(zhí)行一系列操作,有返回值。有返回值。 Function過程的定義格式如下:過程的定義格式如下:Function過程名過程名(形參列表形參列表) VBA程序代碼程序代碼End Functi

9、on 函數(shù)過程不能使用函數(shù)過程不能使用 Call 來調(diào)用執(zhí)行,需要直接引來調(diào)用執(zhí)行,需要直接引用函數(shù)過程名并必須后帶一對圓括號。用函數(shù)過程名并必須后帶一對圓括號。 VB(Visual Basic)是一種面向?qū)ο蟪绦蛟O(shè)計語)是一種面向?qū)ο蟪绦蛟O(shè)計語言,微軟公司將其引用到其他常用的應(yīng)用程序中,例如,言,微軟公司將其引用到其他常用的應(yīng)用程序中,例如,在在 Office 的成員的成員Word、Excel、Access 中,這種夾中,這種夾在應(yīng)用程序中的在應(yīng)用程序中的 Visual Basic 版本稱之為版本稱之為 VBA(Visual Basic for Application)。)。VBA 是是 V

10、B 的子的子集。集。 Access 中使用的編程語言是中使用的編程語言是 VBA語言。語言。 VBA是面向?qū)ο蟮某绦蛟O(shè)計語言。面向?qū)ο蟪绦蛟O(shè)是面向?qū)ο蟮某绦蛟O(shè)計語言。面向?qū)ο蟪绦蛟O(shè)計是一種以對象為基礎(chǔ),以事件來驅(qū)動對象的程序設(shè)計計是一種以對象為基礎(chǔ),以事件來驅(qū)動對象的程序設(shè)計方法。方法。 對象是對象是 VBA 應(yīng)用程序的基礎(chǔ)構(gòu)件。在開發(fā)一個應(yīng)用程序的基礎(chǔ)構(gòu)件。在開發(fā)一個Access 數(shù)據(jù)庫應(yīng)用系統(tǒng)時,必須先建立各種對象,然數(shù)據(jù)庫應(yīng)用系統(tǒng)時,必須先建立各種對象,然后圍繞對象進(jìn)行程序設(shè)計。在后圍繞對象進(jìn)行程序設(shè)計。在Access中,表、查詢、中,表、查詢、窗體、報表等是對象,字段、窗體和報表中的控

11、件(如窗體、報表等是對象,字段、窗體和報表中的控件(如標(biāo)簽、文本框、按鈕等)也是對象。標(biāo)簽、文本框、按鈕等)也是對象。 每個對象均有名稱,稱為對象名。每個對象都有其每個對象均有名稱,稱為對象名。每個對象都有其屬性、方法、事件等。屬性、方法、事件等。 對象有效的名稱必須符合對象有效的名稱必須符合 Access 的標(biāo)準(zhǔn)命名規(guī)的標(biāo)準(zhǔn)命名規(guī)則,窗體、報表、字段等對象的名稱不能超過則,窗體、報表、字段等對象的名稱不能超過64個字符,個字符,控件對象名稱長度不能超過控件對象名稱長度不能超過255個字符。個字符。 對于未綁定控件,默認(rèn)名稱是控件的類型加上一個對于未綁定控件,默認(rèn)名稱是控件的類型加上一個唯一的

12、整數(shù)。例如,對于新建的文本框控件,其默認(rèn)名唯一的整數(shù)。例如,對于新建的文本框控件,其默認(rèn)名稱為:稱為:Text、Text等,以此類推。等,以此類推。 對于綁定控件,如果通過從字段列表中拖放字段來對于綁定控件,如果通過從字段列表中拖放字段來創(chuàng)建控件,則對象的默認(rèn)名稱是記錄源中字段的名稱。創(chuàng)建控件,則對象的默認(rèn)名稱是記錄源中字段的名稱。 在在“設(shè)計視圖設(shè)計視圖”(如窗體(如窗體“設(shè)計視圖設(shè)計視圖” )窗口中,)窗口中,如果要修改某個對象的名稱,可在該對象如果要修改某個對象的名稱,可在該對象“屬性表屬性表”對對話框中,對話框中,對“名稱名稱”屬性賦予新的對象名稱。屬性賦予新的對象名稱。 注意:同一窗

13、體、報表上的控件的名稱不能相同。注意:同一窗體、報表上的控件的名稱不能相同。但不同窗體、報表或數(shù)據(jù)訪問頁上的控件的名稱可以相但不同窗體、報表或數(shù)據(jù)訪問頁上的控件的名稱可以相同。同。 Access數(shù)據(jù)庫由表、查詢、窗體、報表、數(shù)據(jù)庫由表、查詢、窗體、報表、宏和模塊對象列表構(gòu)成,形成不同的類。宏和模塊對象列表構(gòu)成,形成不同的類。 在在“導(dǎo)航導(dǎo)航”窗格中可列出所有的數(shù)據(jù)庫對象,窗格中可列出所有的數(shù)據(jù)庫對象,單擊單擊“導(dǎo)航導(dǎo)航”窗格窗格“瀏覽類別瀏覽類別”中的任一對象類中的任一對象類(如(如“窗體窗體”),就展開相應(yīng)對象(如),就展開相應(yīng)對象(如“窗體窗體”)類的對象列表。類的對象列表。 集合表達(dá)的是

14、某類對象所包含的實(shí)例構(gòu)成。集合表達(dá)的是某類對象所包含的實(shí)例構(gòu)成。 對象屬性是描述對象的特征。對象屬性是描述對象的特征。 對象的每個屬性都有一個默認(rèn)值,這在對象的每個屬性都有一個默認(rèn)值,這在“屬性表屬性表”對話框中可以看到。如果不改變該值,應(yīng)用程序就使對話框中可以看到。如果不改變該值,應(yīng)用程序就使用該默認(rèn)值,如果默認(rèn)值不能滿足要求,就要對它重用該默認(rèn)值,如果默認(rèn)值不能滿足要求,就要對它重新設(shè)置。新設(shè)置。 在在VBA代碼中,對象屬性的引用方式:代碼中,對象屬性的引用方式: 對象名對象名.屬性名屬性名 Access中中“對象對象”可以是單一對象,也可以是可以是單一對象,也可以是對象的集合。例如,對象

15、的集合。例如,Label0.caption 中的中的Label0表表示一個示一個“標(biāo)簽標(biāo)簽”對象,對象,Reports.Item(0) 表示報表集表示報表集合中的第一個報表對象。合中的第一個報表對象。 在可視化的在可視化的“設(shè)計視圖設(shè)計視圖”(如窗體(如窗體“設(shè)計視圖設(shè)計視圖” )窗口中,)窗口中,若要查看或設(shè)置某一對象的屬性,可以通過若要查看或設(shè)置某一對象的屬性,可以通過“屬性表屬性表”對話框來對話框來進(jìn)行,不過此時在進(jìn)行,不過此時在“屬性表屬性表”對話框中列出的屬性名是中文的,對話框中列出的屬性名是中文的,如圖如圖8-2所示。但在所示。但在VBE窗口中,輸入某一對象名及窗口中,輸入某一對象

16、名及“.”后彈出的后彈出的“屬性及方法屬性及方法”列表框中的屬性名或方法名全都是英文的,如圖列表框中的屬性名或方法名全都是英文的,如圖8-3所示。所示。中文的中文的英文的英文的窗體常用格式屬性窗體常用格式屬性作用作用AutoCenter用于設(shè)置窗體打開時用于設(shè)置窗體打開時,是否放置屏幕中部是否放置屏幕中部BorderStyle用于設(shè)置窗體的邊框樣式用于設(shè)置窗體的邊框樣式Caption用于設(shè)置窗體的標(biāo)題內(nèi)容用于設(shè)置窗體的標(biāo)題內(nèi)容CloseButton用于設(shè)置是否在窗體中顯出關(guān)閉按鈕用于設(shè)置是否在窗體中顯出關(guān)閉按鈕ControlBox用于設(shè)置是否在窗體中顯出控制框用于設(shè)置是否在窗體中顯出控制框Mi

17、nMaxButtons用于設(shè)置是否在窗體顯出最小化和最大化按鈕用于設(shè)置是否在窗體顯出最小化和最大化按鈕NavigationButtons用于設(shè)置是否顯出導(dǎo)航按鈕用于設(shè)置是否顯出導(dǎo)航按鈕Picture用于設(shè)置窗體的背景圖片用于設(shè)置窗體的背景圖片RecordSelector用于設(shè)置是否顯出記錄選定器用于設(shè)置是否顯出記錄選定器ScrollBars用于設(shè)置是否顯出滾動條用于設(shè)置是否顯出滾動條窗體常用數(shù)據(jù)屬性窗體常用數(shù)據(jù)屬性作用作用RecordSource用于設(shè)置窗體的數(shù)據(jù)來源用于設(shè)置窗體的數(shù)據(jù)來源OrderBy用于設(shè)置窗體中的記錄的排序方式用于設(shè)置窗體中的記錄的排序方式AllowAdditions用于

18、設(shè)置窗體中的記錄是否可以添加用于設(shè)置窗體中的記錄是否可以添加AllowDeletions用于設(shè)置窗體中的記錄是否可以刪除用于設(shè)置窗體中的記錄是否可以刪除AllowEdits用于設(shè)置窗體中的記錄是否可以編輯用于設(shè)置窗體中的記錄是否可以編輯AllowFilters用于設(shè)置窗體中的記錄是否可以篩選用于設(shè)置窗體中的記錄是否可以篩選文本框?qū)傩晕谋究驅(qū)傩宰饔米饔?BackColor用于設(shè)置文本框的背景顏色,用于設(shè)置文本框的背景顏色,如設(shè)置藍(lán)色:如設(shè)置藍(lán)色:text0.BackColor =RGB(0, 0, 255) ForeColor用于設(shè)置文本框的前景(字體)顏色用于設(shè)置文本框的前景(字體)顏色Bor

19、derColor用于設(shè)置文本框的邊框顏色用于設(shè)置文本框的邊框顏色BorderStyle用于設(shè)置文本框的邊框樣式用于設(shè)置文本框的邊框樣式 Enabled用于設(shè)置文本框是否可用,用于設(shè)置文本框是否可用,True為可用,為可用,F(xiàn)alse 為不可用為不可用 Name用于設(shè)置文本框的名稱用于設(shè)置文本框的名稱 Locked用于設(shè)置文本框是否可編輯用于設(shè)置文本框是否可編輯 Value用于設(shè)置文本框中顯顯示的內(nèi)容用于設(shè)置文本框中顯顯示的內(nèi)容 Visible用于設(shè)置文本框是否可見,用于設(shè)置文本框是否可見,True為可見,為可見,F(xiàn)alse 為不可見為不可見 Text用于設(shè)置在文本框中顯示的文本用于設(shè)置在文本框

20、中顯示的文本 (要求文本框先獲得焦點(diǎn)要求文本框先獲得焦點(diǎn))InputMask用于設(shè)置文本框的輸入掩碼。若將用于設(shè)置文本框的輸入掩碼。若將InputMask 屬性設(shè)為屬性設(shè)為“密碼密碼”,則在該文本框中鍵入的任何字符都將以原字符,則在該文本框中鍵入的任何字符都將以原字符保存,但顯示為星號(保存,但顯示為星號(*)。)。命令按鈕常用屬性命令按鈕常用屬性作用作用 Caption用于設(shè)置命令按鈕上要顯示的文字用于設(shè)置命令按鈕上要顯示的文字 Cancel用于設(shè)置命令按鈕是否也是窗體上用于設(shè)置命令按鈕是否也是窗體上的的“取消取消”按鈕按鈕 Default用于設(shè)置命令按鈕是否是窗體上的用于設(shè)置命令按鈕是否是

21、窗體上的默認(rèn)按鈕默認(rèn)按鈕 Enabled用于設(shè)置命令按鈕是否可用用于設(shè)置命令按鈕是否可用 Picture用于設(shè)置命令按鈕上要顯示的圖形用于設(shè)置命令按鈕上要顯示的圖形 對象的方法就是對象可以執(zhí)行的行為。對象的方法就是對象可以執(zhí)行的行為。 如果說,對象的屬性是靜態(tài)規(guī)格,那么對象的方如果說,對象的屬性是靜態(tài)規(guī)格,那么對象的方法便是動態(tài)操作,目的是改變對象的當(dāng)前狀態(tài)。法便是動態(tài)操作,目的是改變對象的當(dāng)前狀態(tài)。 在在 VBA 代碼中,對象方法的引用方式:代碼中,對象方法的引用方式: 對象名對象名.方法名方法名 例如,將光標(biāo)插入點(diǎn)移入名為例如,將光標(biāo)插入點(diǎn)移入名為 Text0 文本框內(nèi)的文本框內(nèi)的SetF

22、ocus 方法引用方式為:方法引用方式為: Access應(yīng)用程序的各個對象都有一些方法可供調(diào)應(yīng)用程序的各個對象都有一些方法可供調(diào)用。在用。在VBE窗口中,輸入某一對象名及窗口中,輸入某一對象名及“.”后彈出的后彈出的“屬性及方法屬性及方法”列表框中,列出了該對象可用的的屬列表框中,列出了該對象可用的的屬性名或方法名。性名或方法名。 此外,此外,Access還提供一個重要的對象:還提供一個重要的對象:DoCmd對象。它的主要功能是通過調(diào)用包含在內(nèi)部的方法來對象。它的主要功能是通過調(diào)用包含在內(nèi)部的方法來實(shí)現(xiàn)實(shí)現(xiàn) VBA 編程中對編程中對Access的操作。的操作。 例如,利用例如,利用DoCmd對

23、象的對象的OpenReport方法來打方法來打開開“課程信息課程信息”報表的語句格式為:報表的語句格式為: DoCmd.OpenReport 課程信息課程信息 事件是事件是 Access 窗體或報表及其上的控件等對象窗體或報表及其上的控件等對象可以可以“辯識辯識”的動作,是對象對外部操作的響應(yīng),如的動作,是對象對外部操作的響應(yīng),如在程序執(zhí)行時,單擊命令按鈕會產(chǎn)生一個在程序執(zhí)行時,單擊命令按鈕會產(chǎn)生一個Click事件。事件。事件的發(fā)生通常是用戶操作的結(jié)果。事件在某個對象事件的發(fā)生通常是用戶操作的結(jié)果。事件在某個對象上發(fā)生或?qū)δ硞€對象發(fā)生。上發(fā)生或?qū)δ硞€對象發(fā)生。 Access 可以響應(yīng)多種類型的

24、事件:鼠標(biāo)單擊、數(shù)可以響應(yīng)多種類型的事件:鼠標(biāo)單擊、數(shù)據(jù)更改、窗體打開或關(guān)閉及許多其他類型的事件。據(jù)更改、窗體打開或關(guān)閉及許多其他類型的事件。 Access 數(shù)據(jù)庫系統(tǒng)里,可以通過兩種方式來處數(shù)據(jù)庫系統(tǒng)里,可以通過兩種方式來處理窗體、報表或控件的事件響應(yīng)。一是使用宏對象來理窗體、報表或控件的事件響應(yīng)。一是使用宏對象來設(shè)置事件屬性;二是為某個事件編寫設(shè)置事件屬性;二是為某個事件編寫 VBA 代碼過程,代碼過程,完成指定動作,這樣的代碼過程稱為事件過程或事件完成指定動作,這樣的代碼過程稱為事件過程或事件響應(yīng)代碼。響應(yīng)代碼。 每個對象都有一系列預(yù)先定義的事件集。例如,每個對象都有一系列預(yù)先定義的事件

25、集。例如,命令按鈕能響應(yīng)單擊、獲取焦點(diǎn)、失去焦點(diǎn)等事件,命令按鈕能響應(yīng)單擊、獲取焦點(diǎn)、失去焦點(diǎn)等事件,可以通過屬性對話框中的可以通過屬性對話框中的“事件事件”選項(xiàng)卡查看。選項(xiàng)卡查看。 實(shí)際上,實(shí)際上,Access窗體、報表或控件的事件有很多,窗體、報表或控件的事件有很多,其中一部分對象事件如表其中一部分對象事件如表8-5、表、表8-6、表、表8-7、表、表8-8、表表8-9所示。所示。事件事件說明說明 load窗體加載時發(fā)生事件 Unload窗體卸載時發(fā)生事件 Open窗體打開時發(fā)生事件 Close窗體關(guān)閉時發(fā)生事件 Click窗體單擊時發(fā)生事件 DblClick窗體雙擊時發(fā)生事件 Mouse

26、Down窗體鼠標(biāo)按下時發(fā)生事件 KeyPress窗體上鍵盤擊鍵時發(fā)生事件 KeyDown窗體上鍵盤按下鍵時發(fā)生事件注意:首次打開窗體時,下列事件將按如下順序發(fā)生:注意:首次打開窗體時,下列事件將按如下順序發(fā)生:Open事件事件 Load事件事件 Resize事件事件 Activate事件事件 Current事件事件事件事件說明說明 Open報表打開時發(fā)生事件 Close報表關(guān)閉時發(fā)生事件事件事件說明說明 Click 按鈕單擊時發(fā)生事件 DblClick 按鈕雙擊時發(fā)生事件 Enter 按鈕獲得輸入焦點(diǎn)之前發(fā)生事件 GetFoucs 按鈕獲得輸入焦點(diǎn)時發(fā)生事件 MouseDown 按鈕上鼠標(biāo)按下

27、時發(fā)生事件 KeyPress 按鈕上鍵盤擊鍵時發(fā)生事件事件事件說明說明 Click標(biāo)簽單擊時發(fā)生事件 DblClick標(biāo)簽雙擊時發(fā)生事件事件事件說明說明 BeforeUpdate 文本框內(nèi)容更新前發(fā)生事件 AfterUpdate 文本框內(nèi)容更新后發(fā)生事件 Enter 文本框輸入焦點(diǎn)之前發(fā)生事件 GetFoucs 文本框獲得輸入焦點(diǎn)時發(fā)生事件 LostFoucs 文本框失去輸入焦點(diǎn)時發(fā)生事件 事件過程是事件處理程序,與事件一一對應(yīng)。事件過程是事件處理程序,與事件一一對應(yīng)。它是為響應(yīng)由用戶或程序代碼引發(fā)的事件或由系統(tǒng)它是為響應(yīng)由用戶或程序代碼引發(fā)的事件或由系統(tǒng)觸發(fā)的事件而運(yùn)行的過程。過程包含一系列

28、的觸發(fā)的事件而運(yùn)行的過程。過程包含一系列的 VBA 語句,用以執(zhí)行操作或計算值。語句,用以執(zhí)行操作或計算值。 用戶編寫的用戶編寫的VBA程序代碼是放置在稱為過程程序代碼是放置在稱為過程的單元中。例如,需要命令按鈕響應(yīng)的單元中。例如,需要命令按鈕響應(yīng) Click 事件,事件,就把完成就把完成 Click 事件功能的事件功能的VBA程序語句代碼放程序語句代碼放置到該命令按鈕的置到該命令按鈕的 Click 事件的事件過程中。事件的事件過程中。事件過程的形式如下:事件過程的形式如下: Private Sub 對象名對象名_事件名()事件名() (事件過程代碼)(事件過程代碼) End Sub事件過程的

29、形式如下:事件過程的形式如下: Private Sub 對象名對象名_事件名()事件名() (事件過程代碼)(事件過程代碼) End Sub 例例8-1 新建一個窗體并在其上放置一個命令新建一個窗體并在其上放置一個命令按鈕,然后創(chuàng)建命令按鈕的按鈕,然后創(chuàng)建命令按鈕的“單擊單擊”事件響應(yīng)過事件響應(yīng)過程。當(dāng)運(yùn)行該窗體時,單擊該窗體中的命令按鈕,程。當(dāng)運(yùn)行該窗體時,單擊該窗體中的命令按鈕,顯出一個含有顯出一個含有“歡迎光臨!歡迎光臨!”文字的消息框。文字的消息框。圖圖8-7 命令按鈕的命令按鈕的“Click”事件過程代碼事件過程代碼 Access提供了一個提供了一個VBA 的編程環(huán)境的編程環(huán)境VBE

30、(Visual Basic Editor)窗口,即)窗口,即Visual Basic 編輯器窗口,它是編寫和調(diào)試編輯器窗口,它是編寫和調(diào)試VBA程序代碼的重程序代碼的重要環(huán)境。要環(huán)境。Access模塊分成類模塊和標(biāo)準(zhǔn)模塊兩種。模塊分成類模塊和標(biāo)準(zhǔn)模塊兩種。1進(jìn)入類模塊的進(jìn)入類模塊的 VBE 編程環(huán)境編程環(huán)境 對于類模塊,在窗體或報表的對于類模塊,在窗體或報表的“設(shè)計視圖設(shè)計視圖”中進(jìn)入中進(jìn)入VBE有如有如下常用的下常用的2種方法。:種方法。: (1)先打開某對象的)先打開某對象的“屬性表屬性表”對話框。在該對話框中單擊對話框。在該對話框中單擊“事件事件”選項(xiàng)卡。在該選項(xiàng)卡。在該“事件事件”選項(xiàng)

31、卡中,選定某個事件(如單選項(xiàng)卡中,選定某個事件(如單擊),如圖擊),如圖8-9所示。再單擊該事件屬性欄右側(cè)的所示。再單擊該事件屬性欄右側(cè)的“”按鈕,顯按鈕,顯示示“選擇生成器選擇生成器”對話框。單擊對話框。單擊“選擇生成器選擇生成器”對話框中的對話框中的“代代碼生成器碼生成器”項(xiàng),如圖項(xiàng),如圖8-10所示。單擊所示。單擊“確定確定”按鈕,便打開按鈕,便打開VBE窗口,進(jìn)入窗口,進(jìn)入VBE環(huán)境。此時,系統(tǒng)已經(jīng)為該對象的該事件自動創(chuàng)環(huán)境。此時,系統(tǒng)已經(jīng)為該對象的該事件自動創(chuàng)建了事件過程的模板。建了事件過程的模板。 (2)右鍵單擊某控件,彈出快捷菜單。單擊該快捷菜單中的)右鍵單擊某控件,彈出快捷菜單

32、。單擊該快捷菜單中的“事件生成器事件生成器”項(xiàng),顯示項(xiàng),顯示“選擇生成器選擇生成器”對話框。單擊對話框。單擊“選擇生選擇生成器成器”對話框中的對話框中的“代碼生成器代碼生成器”項(xiàng),單擊項(xiàng),單擊“確定確定”按鈕,便打按鈕,便打開開VBE窗口,進(jìn)入窗口,進(jìn)入VBE環(huán)境。系統(tǒng)已為該對象的的默認(rèn)事件自動環(huán)境。系統(tǒng)已為該對象的的默認(rèn)事件自動創(chuàng)建了事件過程的模板,例如,命令按鈕的默認(rèn)事件是創(chuàng)建了事件過程的模板,例如,命令按鈕的默認(rèn)事件是 Click。2進(jìn)入標(biāo)準(zhǔn)模塊的進(jìn)入標(biāo)準(zhǔn)模塊的 VBE 編程環(huán)境編程環(huán)境 對于標(biāo)準(zhǔn)模塊,模塊進(jìn)入對于標(biāo)準(zhǔn)模塊,模塊進(jìn)入VBE編程環(huán)境可用下面的編程環(huán)境可用下面的2種方法。種方

33、法。 (1)在)在Access 2010窗口中,單擊窗口中,單擊“創(chuàng)建創(chuàng)建”選項(xiàng)卡選項(xiàng)卡上的上的“宏與代碼宏與代碼”組中的組中的“模塊模塊”按鈕,便打開打開按鈕,便打開打開VBE窗口,進(jìn)入窗口,進(jìn)入VBE環(huán)境,如圖環(huán)境,如圖8-11所示。所示。 (2)()(2)在)在Access 2010窗口中,雙擊窗口中,雙擊“導(dǎo)航窗導(dǎo)航窗格格”上的上的“模塊模塊”對象列表中的某個模塊名,便打開打?qū)ο罅斜碇械哪硞€模塊名,便打開打開開VBE窗口,進(jìn)入窗口,進(jìn)入VBE環(huán)境,并顯示該模塊已有的代碼,環(huán)境,并顯示該模塊已有的代碼,如圖如圖8-12所示。所示。視圖視圖 Microsoft Access 切換切換 Ac

34、cess 數(shù)據(jù)庫窗口。數(shù)據(jù)庫窗口。插入模塊插入模塊 用于插入新模塊。用于插入新模塊。運(yùn)行子過程用戶窗體運(yùn)行子過程用戶窗體 運(yùn)行模塊程序。運(yùn)行模塊程序。中斷中斷 中斷正在運(yùn)行的程序。中斷正在運(yùn)行的程序。重新設(shè)置重新設(shè)置 結(jié)束正在運(yùn)行的程序,重新進(jìn)入模塊設(shè)計狀態(tài)結(jié)束正在運(yùn)行的程序,重新進(jìn)入模塊設(shè)計狀態(tài)設(shè)計模式設(shè)計模式 設(shè)計模式和非設(shè)計模式切換。設(shè)計模式和非設(shè)計模式切換。工程資源管理器工程資源管理器 打開工程資源管理器窗口。打開工程資源管理器窗口。屬性窗口屬性窗口 打開屬性窗口。打開屬性窗口。對象瀏覽器對象瀏覽器 打開對象瀏覽器窗口。打開對象瀏覽器窗口。圖圖8-15 VBE窗口中的標(biāo)準(zhǔn)工具欄窗口中的

35、標(biāo)準(zhǔn)工具欄 單擊單擊 VBE 窗口菜單欄中的窗口菜單欄中的 “視圖視圖” 菜單中的菜單中的 “工程資源管理器工程資源管理器”命令,即可打開工程資源管理器命令,即可打開工程資源管理器窗口。窗口。 工程資源管理器窗口簡稱工程窗口。在工程窗口中工程資源管理器窗口簡稱工程窗口。在工程窗口中的列表框當(dāng)中列出了應(yīng)用程序的所有模塊文件。單擊的列表框當(dāng)中列出了應(yīng)用程序的所有模塊文件。單擊 “查看代碼查看代碼” 按鈕可以打開相應(yīng)代碼窗口,單擊按鈕可以打開相應(yīng)代碼窗口,單擊 “查查看對象看對象” 按鈕可以打開相應(yīng)對象窗口,單擊按鈕可以打開相應(yīng)對象窗口,單擊 “切換文切換文件夾件夾” 按鈕可以隱藏或顯示對象分類文件

36、夾。按鈕可以隱藏或顯示對象分類文件夾。 雙擊工程窗口上的一個模塊或類,相應(yīng)的代碼窗口雙擊工程窗口上的一個模塊或類,相應(yīng)的代碼窗口就會顯示出來。就會顯示出來。 單擊單擊 VBE 窗口菜單欄中的窗口菜單欄中的 “視圖視圖” 菜單中的菜單中的“屬屬性性”命令,即可打開屬性窗口。在屬性窗口中,列出了命令,即可打開屬性窗口。在屬性窗口中,列出了所選對象的各個屬性,分所選對象的各個屬性,分 “按字母序按字母序” 和和 “按分類序按分類序” 兩種查看形式。可以直接在屬性窗口中編輯對象的屬性,兩種查看形式??梢灾苯釉趯傩源翱谥芯庉媽ο蟮膶傩裕@屬于對象屬性的這屬于對象屬性的“靜態(tài)靜態(tài)”設(shè)置方法;可以在代碼窗口

37、設(shè)置方法;可以在代碼窗口內(nèi)用內(nèi)用VBA代碼編輯對象的屬性,這屬于對象屬性的代碼編輯對象的屬性,這屬于對象屬性的“動動態(tài)態(tài)”設(shè)置方法。設(shè)置方法。 注意:為了在屬性窗口中列出注意:為了在屬性窗口中列出 Access 類對象,應(yīng)類對象,應(yīng)首先打開這些類對象的首先打開這些類對象的 “設(shè)計設(shè)計”視圖。視圖。 單擊單擊VBE窗口菜單欄中的窗口菜單欄中的“視圖視圖”菜單中的菜單中的“代碼窗口代碼窗口”命令,即可打開代碼窗口??梢悦?,即可打開代碼窗口??梢允褂么a窗口來編寫、顯示以及編輯使用代碼窗口來編寫、顯示以及編輯VBA程序程序代碼。代碼。 實(shí)際操作時,在打開各模塊的代碼窗口后,實(shí)際操作時,在打開各模塊

38、的代碼窗口后,可以查看不同窗體或模塊中的代碼,并且在它可以查看不同窗體或模塊中的代碼,并且在它們之間做復(fù)制以及粘貼的動作。們之間做復(fù)制以及粘貼的動作。 單擊單擊 VBE 窗口菜單欄中的窗口菜單欄中的 “視圖視圖” 菜單中的菜單中的 “立即立即窗口窗口” 命令,即可打開立即窗口。命令,即可打開立即窗口。 在立即窗口中,可以鍵入或粘貼一行代碼,然后按下在立即窗口中,可以鍵入或粘貼一行代碼,然后按下 ENTER 鍵來執(zhí)行該代碼。但是立即窗口中的代碼是不能存鍵來執(zhí)行該代碼。但是立即窗口中的代碼是不能存儲的。儲的。 若在立即窗口鍵入若在立即窗口鍵入“Print 19 Mod 7”,則在下一行輸,則在下一

39、行輸出的結(jié)果是出的結(jié)果是 5。 若在立即窗口鍵入若在立即窗口鍵入“? 19 Mod 7”,則在下一行輸出的,則在下一行輸出的結(jié)果是結(jié)果是 5。 若在立即窗口鍵入若在立即窗口鍵入“? Mid(“Access”,3,2)”, 則在下一則在下一行輸出的結(jié)果是行輸出的結(jié)果是 ce。 注意,注意,“Print”命令與命令與 “?”命令的功能相同,都是在立命令的功能相同,都是在立即窗口輸出結(jié)果值。即窗口輸出結(jié)果值。 此外,在此外,在VBE代碼中,若使用形如代碼中,若使用形如“Debug.Print 表達(dá)式表達(dá)式”的語句,也將在立即窗口中輸出該表達(dá)式的結(jié)果值。例如,的語句,也將在立即窗口中輸出該表達(dá)式的結(jié)果

40、值。例如,語句語句 Debug.Print 3*5,將在立即窗口輸出結(jié)果值是,將在立即窗口輸出結(jié)果值是15。6本地窗口本地窗口 單擊單擊VBE窗口菜單欄中的窗口菜單欄中的“視圖視圖”菜單中的菜單中的“本地窗口本地窗口”命令,即可打開本地窗口。命令,即可打開本地窗口。 在本地窗口中,可自動顯示出所有在當(dāng)前過程中在本地窗口中,可自動顯示出所有在當(dāng)前過程中的變量聲明及變量值。的變量聲明及變量值。7監(jiān)視窗口監(jiān)視窗口 單擊單擊VBE窗口菜單欄中的窗口菜單欄中的“視圖視圖”菜單中的菜單中的“監(jiān)視窗口監(jiān)視窗口”命令,即可打開監(jiān)視窗口。命令,即可打開監(jiān)視窗口。 當(dāng)工程中有定義監(jiān)視表達(dá)式定義時,就會自動出當(dāng)工程

41、中有定義監(jiān)視表達(dá)式定義時,就會自動出現(xiàn)?,F(xiàn)。 在編寫在編寫 VBA 代碼時,需要用到程序設(shè)計基代碼時,需要用到程序設(shè)計基礎(chǔ)知識,包括礎(chǔ)知識,包括 VBA 的標(biāo)準(zhǔn)數(shù)據(jù)類型、自定義數(shù)的標(biāo)準(zhǔn)數(shù)據(jù)類型、自定義數(shù)據(jù)類型、常量與變量、運(yùn)算符、表達(dá)式以及常據(jù)類型、常量與變量、運(yùn)算符、表達(dá)式以及常用函數(shù)等內(nèi)容。用函數(shù)等內(nèi)容。 VBA 的數(shù)據(jù)類型有系統(tǒng)定義和自定義兩種,系統(tǒng)的數(shù)據(jù)類型有系統(tǒng)定義和自定義兩種,系統(tǒng)定義的數(shù)據(jù)類型稱為標(biāo)準(zhǔn)數(shù)據(jù)類型。定義的數(shù)據(jù)類型稱為標(biāo)準(zhǔn)數(shù)據(jù)類型。 Access數(shù)據(jù)庫系統(tǒng)創(chuàng)建表對象時所涉及到的字段數(shù)據(jù)庫系統(tǒng)創(chuàng)建表對象時所涉及到的字段數(shù)據(jù)類型(除了數(shù)據(jù)類型(除了OLE對象和備注數(shù)據(jù)類型外

42、),在對象和備注數(shù)據(jù)類型外),在VBA 中都有相對應(yīng)的數(shù)據(jù)類型。中都有相對應(yīng)的數(shù)據(jù)類型。 VBA 的標(biāo)準(zhǔn)數(shù)據(jù)類型如表的標(biāo)準(zhǔn)數(shù)據(jù)類型如表8-10所示。在表所示。在表8-10中中列出了列出了VBA數(shù)據(jù)類型及其對應(yīng)的類型關(guān)鍵字、類型符、數(shù)據(jù)類型及其對應(yīng)的類型關(guān)鍵字、類型符、(用于變量命名的)前綴、所占的存儲空間及取值范圍(用于變量命名的)前綴、所占的存儲空間及取值范圍等內(nèi)容。其中的類型符即是類型聲明字符,它是附加到等內(nèi)容。其中的類型符即是類型聲明字符,它是附加到變量名上的字符,指出變量的數(shù)據(jù)類型,如變量名上的字符,指出變量的數(shù)據(jù)類型,如k$。數(shù)據(jù)數(shù)據(jù)類型類型類型類型關(guān)鍵字關(guān)鍵字類型類型符符前綴前綴存

43、儲存儲空間空間取值范圍取值范圍字節(jié)型字節(jié)型Byte無無Byt1字節(jié)字節(jié)整型整型Integer%Int2字節(jié)字節(jié)-3276832767長整型長整型Long&Lng4字節(jié)字節(jié)-21474836482147483647單精度型單精度型Single!Sng4字節(jié)字節(jié)負(fù)數(shù)負(fù)數(shù)-3.402823E38 -1.401298E-45正數(shù)正數(shù)1.401298E-45 3.402823E38雙精度型雙精度型Double#Dbl8字節(jié)字節(jié)負(fù)數(shù)負(fù)數(shù) -1.79769313486232E308 -4.9406545841247E-324正數(shù)正數(shù) 4.9406545841247E-324 1.7976931348

44、6232E308貨幣型貨幣型CurrencyCur8字節(jié)字節(jié) -922337203685477.5808 922337203685477.5807字符串型字符串型String$Str暫不暫不定定定長字符串可包含定長字符串可包含0個字符個字符 216個字符個字符 變長字符串可包含變長字符串可包含0個字符個字符 231個字符個字符布爾型布爾型Boolean無無Bln2字節(jié)字節(jié)True或或False日期型日期型Date無無Dtm8字節(jié)字節(jié)100年年1月月1日日9999年年12月月31日日變體類型變體類型Variant無無Vnt暫不暫不定定1/1/10000(日期日期), 數(shù)字和雙精度同數(shù)字和雙精度同

45、,文本和字符串同文本和字符串同 (1)字符串型()字符串型(String,類型符,類型符 $ ) 字符串是一個字符序列,包括除雙引號和字符串是一個字符序列,包括除雙引號和 Entrer 鍵以外鍵以外可打印的所有字符。一個字符串的前后要用英文的雙引號可打印的所有字符。一個字符串的前后要用英文的雙引號 括括起來,故英文的雙引號起來,故英文的雙引號 作為字符串的定界符號。例如:作為字符串的定界符號。例如:2008 、劉劉 星星 和和 都是字符串型數(shù)據(jù)。字符串中的空格都是字符串型數(shù)據(jù)。字符串中的空格也是有效字符。也是有效字符。 字符串長度是指該字符串所包含的字符個數(shù)。字符串長度是指該字符串所包含的字符

46、個數(shù)。 例如:例如:2008年年 的長度為的長度為5。 長度為長度為0的字符串(即的字符串(即 )稱為空字符串。)稱為空字符串。 字符串有兩種,即變長字符串與定長字符串。變長字符串字符串有兩種,即變長字符串與定長字符串。變長字符串的長度是不確定的,變長字符串最多可包含大約的長度是不確定的,變長字符串最多可包含大約 20 億億 ( 231)個字符。定長字符串的長度是確定的,定長字符串可包含個字符。定長字符串的長度是確定的,定長字符串可包含 1 到到大約大約 64K ( 216 ) 個字符。個字符。 (2)布爾型數(shù)據(jù)()布爾型數(shù)據(jù)(Boolean) 布爾型數(shù)據(jù)只有兩個值:布爾型數(shù)據(jù)只有兩個值:Tr

47、ue或或False。 布爾型數(shù)據(jù)轉(zhuǎn)換為其他類型數(shù)據(jù)時,布爾型數(shù)據(jù)轉(zhuǎn)換為其他類型數(shù)據(jù)時,True轉(zhuǎn)換轉(zhuǎn)換為為 -1,F(xiàn)alse轉(zhuǎn)換為轉(zhuǎn)換為0;其他類型數(shù)據(jù)轉(zhuǎn)換為布;其他類型數(shù)據(jù)轉(zhuǎn)換為布爾型時,爾型時,0轉(zhuǎn)換為轉(zhuǎn)換為False,其他轉(zhuǎn)換為,其他轉(zhuǎn)換為True。(4)日期型數(shù)據(jù)()日期型數(shù)據(jù)(Date) 任何可以識別的文本日期數(shù)據(jù)可以賦給日期變量。任何可以識別的文本日期數(shù)據(jù)可以賦給日期變量。“日期日期/時間時間”類型數(shù)據(jù)必須前后用英文的井號類型數(shù)據(jù)必須前后用英文的井號“#”括括住。住。允許用各種表示日期和時間的格式。允許用各種表示日期和時間的格式。 日期可以用日期可以用“/”、“,”、“-”分隔開,

48、可以是年、分隔開,可以是年、月、日,也可以是月、日、年的順序。時間必須用月、日,也可以是月、日、年的順序。時間必須用“:”分隔,順序是:時、分、秒。分隔,順序是:時、分、秒。例如:例如:#1999-08-11 10:25:00 pm# 、#08/23/2008# 、#03-25-2007 20:30:00# 等都是有效的日期型數(shù)據(jù)。在等都是有效的日期型數(shù)據(jù)。在 VBA 中會自動轉(zhuǎn)換成中會自動轉(zhuǎn)換成 mm/dd/yyyy(月(月/日日/年)的形式。年)的形式。 (4)變體類型()變體類型(Variant) Variant 數(shù)據(jù)類型是所有沒被顯式聲明(用如數(shù)據(jù)類型是所有沒被顯式聲明(用如 Dim、

49、Private、Public 或或 Static等語句)為其他類型變量的數(shù)據(jù)類型。等語句)為其他類型變量的數(shù)據(jù)類型。Variant 數(shù)據(jù)類型并沒有類型符。數(shù)據(jù)類型并沒有類型符。 變體類型是一種特殊的數(shù)據(jù)類型,除了定長字符串類型及用變體類型是一種特殊的數(shù)據(jù)類型,除了定長字符串類型及用戶自定義類型外,可以包含其他任何類型的數(shù)據(jù);變體類型還可戶自定義類型外,可以包含其他任何類型的數(shù)據(jù);變體類型還可以包含以包含Empty 、Error、Nothing 和和Null特殊值。使用時,可以特殊值。使用時,可以用用VarType 與與TypeName兩個函數(shù)來檢查兩個函數(shù)來檢查 Variant型變量中數(shù)據(jù)型變

50、量中數(shù)據(jù)的具體對應(yīng)數(shù)據(jù)類型。的具體對應(yīng)數(shù)據(jù)類型。 VBA中規(guī)定,如果沒有顯式聲明或使用類型說明符來定義變中規(guī)定,如果沒有顯式聲明或使用類型說明符來定義變量的數(shù)據(jù)類型,默認(rèn)為變體類型(量的數(shù)據(jù)類型,默認(rèn)為變體類型(Variant)。)。 變量在程序運(yùn)行期間其值可以發(fā)生變化的量。實(shí)變量在程序運(yùn)行期間其值可以發(fā)生變化的量。實(shí)際上,變量是內(nèi)存中的臨時存儲單元,用于存儲數(shù)據(jù)。際上,變量是內(nèi)存中的臨時存儲單元,用于存儲數(shù)據(jù)。由于計算機(jī)處理數(shù)據(jù)時,必須將數(shù)據(jù)裝入內(nèi)存,因此,由于計算機(jī)處理數(shù)據(jù)時,必須將數(shù)據(jù)裝入內(nèi)存,因此,在高級語言編寫的程序中,需要將存放數(shù)據(jù)的內(nèi)存單在高級語言編寫的程序中,需要將存放數(shù)據(jù)的內(nèi)

51、存單元命名,通過內(nèi)存單元名(即變量名)來訪問其中的元命名,通過內(nèi)存單元名(即變量名)來訪問其中的數(shù)據(jù)。數(shù)據(jù)。 一個變量有三個要素:變量名、數(shù)據(jù)類型和變量一個變量有三個要素:變量名、數(shù)據(jù)類型和變量值。值。 在在VBA代碼中,通過變量名來引用變量。代碼中,通過變量名來引用變量。 變量名的命名規(guī)則如下:變量名的命名規(guī)則如下: (1)變量名的命名同字段命名一樣,變量名必須以)變量名的命名同字段命名一樣,變量名必須以字母(或漢字)開頭;字母(或漢字)開頭; (2)變量名可以包含字母、數(shù)字或下劃線字符,但)變量名可以包含字母、數(shù)字或下劃線字符,但不能包含標(biāo)點(diǎn)符號或空格;不能包含標(biāo)點(diǎn)符號或空格; (3)變量

52、名的字符個數(shù)不能超過)變量名的字符個數(shù)不能超過 255 個字符;個字符; (4)變量命名不能使用)變量命名不能使用 VBA 的關(guān)鍵字(如的關(guān)鍵字(如 For、To、Next、If、While 等)。等)。 注意:注意: VBA中的變量命名不區(qū)分字母大小寫,如中的變量命名不區(qū)分字母大小寫,如“a”和和“A”代表的是同一個變量。代表的是同一個變量。 例如,例如,a、b_1、st_x 等可以作為變量名,等可以作為變量名,但但 1a、x-1、y 5、s/3 不可作為變量名。不可作為變量名。 有一個空格有一個空格 變量先聲明(即先定義)后使用是較好的程序設(shè)計變量先聲明(即先定義)后使用是較好的程序設(shè)計習(xí)

53、慣??梢栽谀K設(shè)計窗口的頂部說明區(qū)域中習(xí)慣??梢栽谀K設(shè)計窗口的頂部說明區(qū)域中,加入,加入Option Explicit 語句來強(qiáng)制要求所有變量必須先定義才語句來強(qiáng)制要求所有變量必須先定義才能使用。能使用。 顯式聲明變量的基本格式:顯式聲明變量的基本格式: Dim 變量名變量名 As 類型關(guān)鍵字類型關(guān)鍵字, 變量名變量名 As類型關(guān)鍵字類型關(guān)鍵字 其中其中 “As 類型關(guān)鍵字類型關(guān)鍵字”用于指明該變量的數(shù)據(jù)類型。如果省用于指明該變量的數(shù)據(jù)類型。如果省略略 As 類型關(guān)鍵字類型關(guān)鍵字 部分,則默認(rèn)定義該變量為部分,則默認(rèn)定義該變量為 Variant 數(shù)據(jù)類型。數(shù)據(jù)類型。例如例如:Dim i As

54、 IntegerDim j As Long, n As Single, t As String, f As Boolean, g 注意,變量注意,變量g 是定義成變體類型(即是定義成變體類型(即Variant)。)。例如:例如:Dim i As IntegerDim j As Long, n As Single, t As String, f As Boolean, g 注意,變量注意,變量g 是定義成變體類型(即是定義成變體類型(即Variant)。)。Dim xm As String,xh As String * 8 注意,注意,xm 是變長的字符串型變量,是變長的字符串型變量,xh 是定

55、長的是定長的8個個字符長度的字符串型變量。字符長度的字符串型變量。此外,下面這個聲明語句此外,下面這個聲明語句 Dim a As integer,b As long,c As single也可以用類型符代替類型關(guān)鍵字來定義變量,即可以改也可以用類型符代替類型關(guān)鍵字來定義變量,即可以改寫為:寫為: Dim a%,b&,c! 隱式變量(或稱隱含變量)是指沒有直接定義,隱式變量(或稱隱含變量)是指沒有直接定義,借助將一個值指定給變量名的方式來建立的變量。當(dāng)借助將一個值指定給變量名的方式來建立的變量。當(dāng)在變量名稱后沒有附加類型符來指明隱含變量的數(shù)據(jù)在變量名稱后沒有附加類型符來指明隱含變量的數(shù)據(jù)

56、類型時,默認(rèn)為變體類型。例如:類型時,默認(rèn)為變體類型。例如: 語句定義一個變體類型變量語句定義一個變體類型變量m值是。值是。下面語句建立了一個整型數(shù)據(jù)類型的變量。下面語句建立了一個整型數(shù)據(jù)類型的變量。 k% = 591變量的作用域變量的作用域 (1)局部變量)局部變量 在模塊的過程內(nèi)部聲明的變量稱為局部變量。局部變量在模塊的過程內(nèi)部聲明的變量稱為局部變量。局部變量僅在過程代碼執(zhí)行時才可見。在子過程或函數(shù)過程中聲明的僅在過程代碼執(zhí)行時才可見。在子過程或函數(shù)過程中聲明的或不用或不用DimAs 關(guān)鍵字聲明而直接使用的變量作用域都屬于關(guān)鍵字聲明而直接使用的變量作用域都屬于局部范圍。局部變量僅在該過程范

57、圍中有效。局部范圍。局部變量僅在該過程范圍中有效。(2)模塊級變量)模塊級變量 在模塊中的所有過程之外的起始位置聲明的變量稱為模在模塊中的所有過程之外的起始位置聲明的變量稱為模塊級變量。在模塊級變量聲明區(qū)域,用塊級變量。在模塊級變量聲明區(qū)域,用DimAs 關(guān)鍵字聲明關(guān)鍵字聲明的變量的作用域就屬于模塊范圍。模塊級變量僅在該模塊范的變量的作用域就屬于模塊范圍。模塊級變量僅在該模塊范圍中有效。圍中有效。(3)全局變量)全局變量 在標(biāo)準(zhǔn)模塊的所有過程之外的起始位置聲明的變量稱為在標(biāo)準(zhǔn)模塊的所有過程之外的起始位置聲明的變量稱為全局變量,在標(biāo)準(zhǔn)模塊的變量聲明區(qū)域,用全局變量,在標(biāo)準(zhǔn)模塊的變量聲明區(qū)域,用P

58、ublicAs關(guān)鍵關(guān)鍵字聲明的變量的作用域就屬于全局范圍。字聲明的變量的作用域就屬于全局范圍。 2變量的生命周期變量的生命周期 變量的生命周期是指變量在運(yùn)行時有效的持續(xù)時變量的生命周期是指變量在運(yùn)行時有效的持續(xù)時間。變量的持續(xù)時間是從變量聲明語句所在的過程第間。變量的持續(xù)時間是從變量聲明語句所在的過程第一次運(yùn)行到代碼執(zhí)行完畢并將控制權(quán)交回調(diào)用它的過一次運(yùn)行到代碼執(zhí)行完畢并將控制權(quán)交回調(diào)用它的過程為止的時間。每次子過程或函數(shù)過程被調(diào)用時,以程為止的時間。每次子過程或函數(shù)過程被調(diào)用時,以DimAs語句聲明的局部變量,會被設(shè)定默認(rèn)值,數(shù)語句聲明的局部變量,會被設(shè)定默認(rèn)值,數(shù)值數(shù)據(jù)類型變量的默認(rèn)值為值

59、數(shù)據(jù)類型變量的默認(rèn)值為0,字符串型變量的默認(rèn)值,字符串型變量的默認(rèn)值為空字符串(為空字符串( ),布爾型變量的默認(rèn)值為),布爾型變量的默認(rèn)值為False。這些局部變量,有著與子過程或函數(shù)過程等長的持續(xù)這些局部變量,有著與子過程或函數(shù)過程等長的持續(xù)時間。時間。 數(shù)組是在有規(guī)則的結(jié)構(gòu)中包含一種數(shù)據(jù)類數(shù)組是在有規(guī)則的結(jié)構(gòu)中包含一種數(shù)據(jù)類型的一組數(shù)據(jù),也稱作數(shù)組元素變量。型的一組數(shù)據(jù),也稱作數(shù)組元素變量。 數(shù)組變量由變量名和數(shù)組下標(biāo)構(gòu)成,通常數(shù)組變量由變量名和數(shù)組下標(biāo)構(gòu)成,通常用用 Dim 語句來聲明數(shù)組。語句來聲明數(shù)組。一維數(shù)組定義格式:一維數(shù)組定義格式: Dim 數(shù)組名數(shù)組名(下標(biāo)下界下標(biāo)下界 t

60、o 下標(biāo)上界下標(biāo)上界) As 類型關(guān)鍵字類型關(guān)鍵字說明:說明: (1)下標(biāo):下標(biāo)下界和下標(biāo)上界必須為常數(shù),不允)下標(biāo):下標(biāo)下界和下標(biāo)上界必須為常數(shù),不允許表達(dá)式或變量。下標(biāo)下界和下標(biāo)上界為整數(shù),不得許表達(dá)式或變量。下標(biāo)下界和下標(biāo)上界為整數(shù),不得超過超過 Long 數(shù)據(jù)類型的范圍,并且下標(biāo)下界應(yīng)該小于數(shù)據(jù)類型的范圍,并且下標(biāo)下界應(yīng)該小于下標(biāo)上界。如果不指定下標(biāo)下界,即省略了下標(biāo)上界。如果不指定下標(biāo)下界,即省略了“下標(biāo)下下標(biāo)下界界 to”部分,則默認(rèn)該數(shù)組的部分,則默認(rèn)該數(shù)組的“下標(biāo)下界下標(biāo)下界”為為 0,該數(shù),該數(shù)組的數(shù)組元素從組的數(shù)組元素從 “數(shù)組名數(shù)組名(0)” 至至 “數(shù)組名數(shù)組名(下標(biāo)上界下標(biāo)上界)”。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論