




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 為了能解決一些實(shí)際為了能解決一些實(shí)際開發(fā)活動(dòng)中的復(fù)雜的數(shù)據(jù)開發(fā)活動(dòng)中的復(fù)雜的數(shù)據(jù)庫(kù)應(yīng)用問題,庫(kù)應(yīng)用問題,AccessAccess數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)系統(tǒng)提供了系統(tǒng)提供了“模塊模塊”對(duì)象對(duì)象來(lái)解決此類難題。本章主來(lái)解決此類難題。本章主要介紹要介紹AccessAccess數(shù)據(jù)庫(kù)的模塊數(shù)據(jù)庫(kù)的模塊的基本概念及的基本概念及VBAVBA語(yǔ)言的語(yǔ)言的程序設(shè)計(jì)。程序設(shè)計(jì)。退出退出9.1 9.1 模塊概述模塊概述9.2 VBA9.2 VBA程序設(shè)計(jì)概述程序設(shè)計(jì)概述9.3 VBA9.3 VBA編程環(huán)境編程環(huán)境VBEVBE窗口窗口9.4 VBA9.4 VBA編程基礎(chǔ)編程基礎(chǔ)9.5 VBA9.5 VBA程序語(yǔ)句程序語(yǔ)句9
2、.6 VBA9.6 VBA中的常用操作方法中的常用操作方法9.7 VBA 9.7 VBA 程序調(diào)試和錯(cuò)誤處理程序調(diào)試和錯(cuò)誤處理 模塊是模塊是 Access 數(shù)據(jù)庫(kù)中的一個(gè)數(shù)據(jù)庫(kù)對(duì)象,數(shù)據(jù)庫(kù)中的一個(gè)數(shù)據(jù)庫(kù)對(duì)象,它以它以VBA(Visual Basic for Application)語(yǔ)言)語(yǔ)言為基礎(chǔ)編寫。通俗來(lái)說(shuō),模塊是為基礎(chǔ)編寫。通俗來(lái)說(shuō),模塊是 Access 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)中用于保存中用于保存VBA程序代碼的容器。模塊基本上是程序代碼的容器。模塊基本上是由聲明、語(yǔ)句和(由聲明、語(yǔ)句和(Sub 和和 Function)過程組成)過程組成的集合,它們作為一個(gè)已命名的單元存儲(chǔ)在一起,的集合,它們作為
3、一個(gè)已命名的單元存儲(chǔ)在一起,對(duì)對(duì) 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)模塊包含與任何其他對(duì)象都無(wú)關(guān)的常規(guī)過程,標(biāo)準(zhǔn)模塊包含與任何其他對(duì)象都無(wú)關(guān)的常規(guī)過程,以及可以從數(shù)據(jù)庫(kù)任何位置運(yùn)行的經(jīng)常使用的過程。以及可以從數(shù)據(jù)庫(kù)任何位置運(yùn)行的經(jīng)常使用的過程。在標(biāo)準(zhǔn)模塊中,可以放置希望供整個(gè)數(shù)據(jù)庫(kù)的其他過在標(biāo)準(zhǔn)模塊中,可以放置希望供整個(gè)數(shù)據(jù)庫(kù)的其他過程使用的程使用的Sub過程和過程和 Function 過程。過程。 標(biāo)準(zhǔn)模塊中的公共變量或公共過程具有全局特性,標(biāo)準(zhǔn)模塊中的公共變量或公共過程具有
4、全局特性,其作用范圍在整個(gè)應(yīng)用程序里,生命周期是伴隨著應(yīng)其作用范圍在整個(gè)應(yīng)用程序里,生命周期是伴隨著應(yīng)用程序的運(yùn)行而開始、關(guān)閉而結(jié)束。用程序的運(yùn)行而開始、關(guān)閉而結(jié)束。 類模塊是可以包含新對(duì)象的定義的模塊。一個(gè)類的每類模塊是可以包含新對(duì)象的定義的模塊。一個(gè)類的每個(gè)實(shí)例都新建一個(gè)對(duì)象。個(gè)實(shí)例都新建一個(gè)對(duì)象。 窗體模塊和報(bào)表模塊都是類模塊,它們從屬于各自窗體模塊和報(bào)表模塊都是類模塊,它們從屬于各自的窗體和報(bào)表。窗體模塊和報(bào)表模塊通常都含有事件過程,的窗體和報(bào)表。窗體模塊和報(bào)表模塊通常都含有事件過程,而過程的運(yùn)行用于響應(yīng)窗體或報(bào)表上的事件。窗體模塊和而過程的運(yùn)行用于響應(yīng)窗體或報(bào)表上的事件。窗體模塊和報(bào)
5、表模塊中的過程可以調(diào)用標(biāo)準(zhǔn)模塊中已經(jīng)定義好的過程。報(bào)表模塊中的過程可以調(diào)用標(biāo)準(zhǔn)模塊中已經(jīng)定義好的過程。 為窗體或報(bào)表創(chuàng)建第一個(gè)事件過程時(shí),為窗體或報(bào)表創(chuàng)建第一個(gè)事件過程時(shí),Access 將自將自動(dòng)創(chuàng)建與之關(guān)聯(lián)的窗體模塊或報(bào)表模塊。動(dòng)創(chuàng)建與之關(guān)聯(lián)的窗體模塊或報(bào)表模塊。 窗體模塊和報(bào)表模塊具有局部特性,其作用范圍局窗體模塊和報(bào)表模塊具有局部特性,其作用范圍局限在所屬窗體或報(bào)表內(nèi)部,而生命周期則是伴隨著窗體或限在所屬窗體或報(bào)表內(nèi)部,而生命周期則是伴隨著窗體或報(bào)表的打開而開始、關(guān)閉而結(jié)束。報(bào)表的打開而開始、關(guān)閉而結(jié)束。 模塊是裝著模塊是裝著 VBA 代碼的容器。一個(gè)模塊包含一個(gè)聲明代碼的容器。一個(gè)模塊
6、包含一個(gè)聲明區(qū)域,包含一個(gè)或多個(gè)過程。如圖區(qū)域,包含一個(gè)或多個(gè)過程。如圖9-1所示。所示。 過程是模塊的單元組成,用過程是模塊的單元組成,用 VBA 代碼編寫而成。過程代碼編寫而成。過程分為分為 Sub 過程和過程和 Function 過程兩種類型。過程兩種類型。 聲明部分主要包括:聲明部分主要包括:Option聲明、變量或常量或自定義聲明、變量或常量或自定義數(shù)據(jù)類型的聲明。數(shù)據(jù)類型的聲明。 模塊中可以使用的模塊中可以使用的 Option 聲明語(yǔ)句包括:聲明語(yǔ)句包括:(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 聲明模塊中需要字符串比較時(shí),將根據(jù)數(shù)據(jù)庫(kù)的區(qū)域聲明模塊中需要字符串比較時(shí),將根據(jù)數(shù)據(jù)庫(kù)的區(qū)域 ID確定的排序級(jí)別進(jìn)行比較;不聲明則按字符確定的排序級(jí)別進(jìn)行比較;不聲明則按字符 ASClI 碼進(jìn)行比碼進(jìn)行比較。較。(3)Option Explicit 強(qiáng)制模塊用到的變量必須先進(jìn)行聲明。強(qiáng)制模塊用到的變量必須先進(jìn)行聲明。此外,有關(guān)變量或常量的聲明的語(yǔ)句格式將在此外,有關(guān)變量或常量的聲明的語(yǔ)句格式將在9.4節(jié)介紹。節(jié)介紹。2 2SubSub過程過程 Sub過程又稱為子過程。執(zhí)行一系列操作,無(wú)返回過程又稱為子過程。執(zhí)行一系列操作,無(wú)返
8、回值值。 Sub過程的定義格式如下過程的定義格式如下:Sub 過程名過程名(形參列表形參列表) VBA程序代碼程序代碼End Sub VBA 提供了一個(gè)關(guān)鍵字提供了一個(gè)關(guān)鍵字 Call,可以調(diào)用該子過程。,可以調(diào)用該子過程。此外,可以引用該過程名來(lái)調(diào)用該子過程,此時(shí),過程此外,可以引用該過程名來(lái)調(diào)用該子過程,此時(shí),過程名后不能帶有一對(duì)圓括號(hào)名后不能帶有一對(duì)圓括號(hào)。3 3FunctionFunction過程過程 Function 過程又稱為函數(shù)過程。執(zhí)行一系列操作,過程又稱為函數(shù)過程。執(zhí)行一系列操作,有返回值。有返回值。 Function過程的定義格式如下:過程的定義格式如下:Function
9、過程名過程名(形參列表形參列表) VBA程序代碼程序代碼End Function 函數(shù)過程不能使用函數(shù)過程不能使用 Call 來(lái)調(diào)用執(zhí)行,需要直接引來(lái)調(diào)用執(zhí)行,需要直接引用函數(shù)過程名并必須后帶一對(duì)圓括號(hào)。用函數(shù)過程名并必須后帶一對(duì)圓括號(hào)。9.2 VBA9.2 VBA程序設(shè)計(jì)概述程序設(shè)計(jì)概述 VB(Visual Basic)是一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ))是一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,微軟公司將其引用到其他常用的應(yīng)用程序中,例如,言,微軟公司將其引用到其他常用的應(yīng)用程序中,例如,在在 Office 的成員的成員Word、Excel、Access 中,這種夾中,這種夾在應(yīng)用程序中的在應(yīng)用程序中的 Visu
10、al Basic 版本稱之為版本稱之為 VBA(Visual Basic for Application)。)。VBA 是是 VB 的子的子集。集。 Access 中使用的編程語(yǔ)言是中使用的編程語(yǔ)言是 VBA語(yǔ)言。當(dāng)某些語(yǔ)言。當(dāng)某些操作不能用其他操作不能用其他Access對(duì)象實(shí)現(xiàn)或?qū)崿F(xiàn)起來(lái)很困難時(shí),對(duì)象實(shí)現(xiàn)或?qū)崿F(xiàn)起來(lái)很困難時(shí),就可以在模塊中編寫就可以在模塊中編寫VBA程序代碼,以完成這些復(fù)雜程序代碼,以完成這些復(fù)雜任務(wù)。任務(wù)。 Access內(nèi)部提供了功能強(qiáng)大的向?qū)C(jī)制,內(nèi)部提供了功能強(qiáng)大的向?qū)C(jī)制,能處理基本的數(shù)據(jù)庫(kù)操作。在此基礎(chǔ)上再編寫能處理基本的數(shù)據(jù)庫(kù)操作。在此基礎(chǔ)上再編寫適當(dāng)?shù)某绦虼a,
11、可以極大的改善程序功能適當(dāng)?shù)某绦虼a,可以極大的改善程序功能。 VBA是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。面向?qū)κ敲嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。面向?qū)ο蟪绦蛟O(shè)計(jì)是一種以對(duì)象為基礎(chǔ),以事件來(lái)驅(qū)象程序設(shè)計(jì)是一種以對(duì)象為基礎(chǔ),以事件來(lái)驅(qū)動(dòng)對(duì)象的程序設(shè)計(jì)方法。動(dòng)對(duì)象的程序設(shè)計(jì)方法。9.2.1 9.2.1 對(duì)象和對(duì)象名對(duì)象和對(duì)象名 對(duì)象是對(duì)象是 VBA 應(yīng)用程序的基礎(chǔ)構(gòu)件。在開發(fā)一個(gè)應(yīng)用程序的基礎(chǔ)構(gòu)件。在開發(fā)一個(gè)Access 數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)時(shí),必須先建立各種對(duì)象,然數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)時(shí),必須先建立各種對(duì)象,然后圍繞對(duì)象進(jìn)行程序設(shè)計(jì)。在后圍繞對(duì)象進(jìn)行程序設(shè)計(jì)。在Access中,表、查詢、中,表、查詢、窗體、報(bào)表等是對(duì)象,字段
12、、窗體和報(bào)表中的控件(如窗體、報(bào)表等是對(duì)象,字段、窗體和報(bào)表中的控件(如標(biāo)簽、文本框、按鈕等)也是對(duì)象。標(biāo)簽、文本框、按鈕等)也是對(duì)象。 每個(gè)對(duì)象均有名稱,稱為對(duì)象名。每個(gè)對(duì)象都有其每個(gè)對(duì)象均有名稱,稱為對(duì)象名。每個(gè)對(duì)象都有其屬性、方法、事件等。屬性、方法、事件等。 對(duì)象有效的名稱必須符合對(duì)象有效的名稱必須符合 Access 的標(biāo)準(zhǔn)命名規(guī)的標(biāo)準(zhǔn)命名規(guī)則,窗體、報(bào)表、字段等對(duì)象的名稱不能超過則,窗體、報(bào)表、字段等對(duì)象的名稱不能超過64個(gè)字符,個(gè)字符,控件對(duì)象名稱長(zhǎng)度不能超過控件對(duì)象名稱長(zhǎng)度不能超過255個(gè)字符。個(gè)字符。9.2.1 9.2.1 對(duì)象和對(duì)象名對(duì)象和對(duì)象名(續(xù))(續(xù)) 對(duì)于未綁定控件,
13、默認(rèn)名稱是控件的類型加上一個(gè)對(duì)于未綁定控件,默認(rèn)名稱是控件的類型加上一個(gè)唯一的整數(shù)。例如,對(duì)于新建的文本框控件,其默認(rèn)名唯一的整數(shù)。例如,對(duì)于新建的文本框控件,其默認(rèn)名稱為:稱為:Text0、Text1 等,以此類推。等,以此類推。 對(duì)于綁定控件,如果通過從字段列表中拖放字段來(lái)對(duì)于綁定控件,如果通過從字段列表中拖放字段來(lái)創(chuàng)建控件,則對(duì)象的默認(rèn)名稱是記錄源中字段的名稱。創(chuàng)建控件,則對(duì)象的默認(rèn)名稱是記錄源中字段的名稱。 在在“設(shè)計(jì)視圖設(shè)計(jì)視圖”(如窗體(如窗體“設(shè)計(jì)視圖設(shè)計(jì)視圖” )窗口中,)窗口中,如果要修改某個(gè)對(duì)象的名稱,可在該對(duì)象如果要修改某個(gè)對(duì)象的名稱,可在該對(duì)象“屬性屬性”對(duì)話對(duì)話框中,
14、對(duì)框中,對(duì)“名稱名稱”屬性賦予新的對(duì)象名稱。屬性賦予新的對(duì)象名稱。 注意:同一窗體、報(bào)表或數(shù)據(jù)訪問頁(yè)上的控件的名注意:同一窗體、報(bào)表或數(shù)據(jù)訪問頁(yè)上的控件的名稱不能相同。但不同窗體、報(bào)表或數(shù)據(jù)訪問頁(yè)上的控件稱不能相同。但不同窗體、報(bào)表或數(shù)據(jù)訪問頁(yè)上的控件的名稱可以相同。的名稱可以相同。9.2.1 9.2.1 對(duì)象和對(duì)象名對(duì)象和對(duì)象名(續(xù))(續(xù)) Access數(shù)據(jù)庫(kù)由表、查詢、窗體、報(bào)表、數(shù)據(jù)庫(kù)由表、查詢、窗體、報(bào)表、頁(yè)、宏和模塊對(duì)象列表構(gòu)成,形成不同的類。頁(yè)、宏和模塊對(duì)象列表構(gòu)成,形成不同的類。 集合表達(dá)的是某類對(duì)象所包含的實(shí)例構(gòu)成。集合表達(dá)的是某類對(duì)象所包含的實(shí)例構(gòu)成。9.2.2 9.2.2
15、對(duì)象的屬性對(duì)象的屬性 對(duì)象屬性是描述對(duì)象的特征。對(duì)象屬性是描述對(duì)象的特征。 對(duì)象的每個(gè)屬性都有一個(gè)默認(rèn)值,這在對(duì)象的每個(gè)屬性都有一個(gè)默認(rèn)值,這在“屬性屬性”對(duì)話框中可以看到。如果不改變?cè)撝担瑧?yīng)用程序就使對(duì)話框中可以看到。如果不改變?cè)撝?,?yīng)用程序就使用該默認(rèn)值,如果默認(rèn)值不能滿足要求,就要對(duì)它重用該默認(rèn)值,如果默認(rèn)值不能滿足要求,就要對(duì)它重新設(shè)置。新設(shè)置。 在在VBA代碼中,對(duì)象屬性的引用方式:代碼中,對(duì)象屬性的引用方式: 對(duì)象名對(duì)象名.屬性名屬性名 Access中中“對(duì)象對(duì)象”可以是單一對(duì)象,也可以是可以是單一對(duì)象,也可以是對(duì)象的集合。例如,對(duì)象的集合。例如,Label0.caption 中的
16、中的Label0表表示一個(gè)示一個(gè)“標(biāo)簽標(biāo)簽”對(duì)象,對(duì)象,Reports.Item(0) 表示報(bào)表集表示報(bào)表集合中的第一個(gè)報(bào)表對(duì)象。合中的第一個(gè)報(bào)表對(duì)象。9.2.2 9.2.2 對(duì)象的屬性對(duì)象的屬性(續(xù))(續(xù)) 在可視化的在可視化的“設(shè)計(jì)視圖設(shè)計(jì)視圖”(如窗體(如窗體“設(shè)計(jì)視圖設(shè)計(jì)視圖” )窗口中,)窗口中,若要查看或設(shè)置某一對(duì)象的屬性,可以通過若要查看或設(shè)置某一對(duì)象的屬性,可以通過“屬性屬性”對(duì)話框來(lái)進(jìn)對(duì)話框來(lái)進(jìn)行,不過此時(shí)在行,不過此時(shí)在“屬性屬性”對(duì)話框中列出的屬性名是中文的,如圖對(duì)話框中列出的屬性名是中文的,如圖9-2所示。但在所示。但在VBE窗口中,輸入某一對(duì)象名及窗口中,輸入某一對(duì)象
17、名及“.”后彈出的后彈出的“屬屬性及方法性及方法”列表框中的屬性名或方法名全都是英文的,如圖列表框中的屬性名或方法名全都是英文的,如圖9-3所所示。示。英文的英文的中文的中文的表表9-1 9-1 窗體常用的格式屬性窗體常用的格式屬性窗體常用格式屬性窗體常用格式屬性作用作用AutoCenter用于設(shè)置窗體打開時(shí)用于設(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è)置
18、是否在窗體中顯出控制框用于設(shè)置是否在窗體中顯出控制框MinMaxButtons用于設(shè)置是否在窗體顯出最小化和最大化按鈕用于設(shè)置是否在窗體顯出最小化和最大化按鈕NavigationButtons用于設(shè)置是否顯出導(dǎo)航按鈕用于設(shè)置是否顯出導(dǎo)航按鈕Picture用于設(shè)置窗體的背景圖片用于設(shè)置窗體的背景圖片RecordSelector用于設(shè)置是否顯出記錄選定器用于設(shè)置是否顯出記錄選定器ScrollBars用于設(shè)置是否顯出滾動(dòng)條用于設(shè)置是否顯出滾動(dòng)條表表9-2 9-2 窗體常用的數(shù)據(jù)屬性窗體常用的數(shù)據(jù)屬性窗體常用數(shù)據(jù)屬性窗體常用數(shù)據(jù)屬性作用作用RecordSource用于設(shè)置窗體的數(shù)據(jù)來(lái)源用于設(shè)置窗體的數(shù)
19、據(jù)來(lái)源OrderBy用于設(shè)置窗體中的記錄的排序方式用于設(shè)置窗體中的記錄的排序方式AllowAdditions用于設(shè)置窗體中的記錄是否可以添加用于設(shè)置窗體中的記錄是否可以添加AllowDeletions用于設(shè)置窗體中的記錄是否可以刪除用于設(shè)置窗體中的記錄是否可以刪除AllowEdits用于設(shè)置窗體中的記錄是否可以編輯用于設(shè)置窗體中的記錄是否可以編輯AllowFilters用于設(shè)置窗體中的記錄是否可以篩選用于設(shè)置窗體中的記錄是否可以篩選表表9-3 9-3 文本框常用的屬性文本框常用的屬性文本框?qū)傩晕谋究驅(qū)傩宰饔米饔?BackColor用于設(shè)置文本框的背景顏色,用于設(shè)置文本框的背景顏色,如設(shè)置藍(lán)色:
20、如設(shè)置藍(lán)色:text0.BackColor =RGB(0, 0, 255) ForeColor用于設(shè)置文本框的前景(字體)顏色用于設(shè)置文本框的前景(字體)顏色BorderColor用于設(shè)置文本框的邊框顏色用于設(shè)置文本框的邊框顏色BorderStyle用于設(shè)置文本框的邊框樣式用于設(shè)置文本框的邊框樣式 Enabled用于設(shè)置文本框是否可用用于設(shè)置文本框是否可用 Name用于設(shè)置文本框的名稱用于設(shè)置文本框的名稱 Locked用于設(shè)置文本框是否可編輯用于設(shè)置文本框是否可編輯 Value用于設(shè)置文本框中顯顯示的內(nèi)容用于設(shè)置文本框中顯顯示的內(nèi)容 Visible用于設(shè)置文本框是否可見用于設(shè)置文本框是否可見
21、Text用于設(shè)置在文本框中顯示的文本用于設(shè)置在文本框中顯示的文本 (要求要求文本框文本框先獲得焦點(diǎn)先獲得焦點(diǎn))InputMask用于設(shè)置文本框的輸入掩碼。若將用于設(shè)置文本框的輸入掩碼。若將InputMask 屬性設(shè)為屬性設(shè)為“密碼密碼”,則在該,則在該文本框文本框中鍵入的任何字符都將以原字符中鍵入的任何字符都將以原字符保存,但顯示為星號(hào)(保存,但顯示為星號(hào)(*)。)。表表9-4 9-4 命令按鈕常用的屬性命令按鈕常用的屬性命令按鈕常用屬性命令按鈕常用屬性作用作用 Caption用于設(shè)置命令按鈕上要顯示的文字用于設(shè)置命令按鈕上要顯示的文字 Cancel用于設(shè)置命令按鈕是否也是窗體上用于設(shè)置命令按
22、鈕是否也是窗體上的的“取消取消”按鈕按鈕 Default用于設(shè)置命令按鈕是否是窗體上的用于設(shè)置命令按鈕是否是窗體上的默認(rèn)按鈕默認(rèn)按鈕 Enabled用于設(shè)置命令按鈕是否可用用于設(shè)置命令按鈕是否可用 Picture用于設(shè)置命令按鈕上要顯示的圖形用于設(shè)置命令按鈕上要顯示的圖形9.2.3 9.2.3 對(duì)象的方法對(duì)象的方法 對(duì)象的方法就是對(duì)象可以執(zhí)行的行為。對(duì)象的方法就是對(duì)象可以執(zhí)行的行為。 如果說(shuō),對(duì)象的屬性是靜態(tài)規(guī)格,那么對(duì)象的方如果說(shuō),對(duì)象的屬性是靜態(tài)規(guī)格,那么對(duì)象的方法便是動(dòng)態(tài)操作,目的是改變對(duì)象的當(dāng)前狀態(tài)。法便是動(dòng)態(tài)操作,目的是改變對(duì)象的當(dāng)前狀態(tài)。 在在 VBA 代碼中,對(duì)象方法的引用方式:
23、代碼中,對(duì)象方法的引用方式: 對(duì)象名對(duì)象名.方法名方法名 例如,將光標(biāo)插入點(diǎn)移入名為例如,將光標(biāo)插入點(diǎn)移入名為 Text0 文本框內(nèi)的文本框內(nèi)的SetFocus 方法引用方式為:方法引用方式為: Text0.SetFocus9.2.3 9.2.3 對(duì)象的方法對(duì)象的方法(續(xù))(續(xù)) Access應(yīng)用程序的各個(gè)對(duì)象都有一些方法可供調(diào)應(yīng)用程序的各個(gè)對(duì)象都有一些方法可供調(diào)用。在用。在VBE窗口中,輸入某一對(duì)象名及窗口中,輸入某一對(duì)象名及“.”后彈出的后彈出的“屬性及方法屬性及方法”列表框中,列出了該對(duì)象可用的的屬列表框中,列出了該對(duì)象可用的的屬性名或方法名性名或方法名。 此外,此外,Access還提供
24、一個(gè)重要的對(duì)象:還提供一個(gè)重要的對(duì)象:DoCmd對(duì)象。它的主要功能是通過調(diào)用包含在內(nèi)部的方法來(lái)對(duì)象。它的主要功能是通過調(diào)用包含在內(nèi)部的方法來(lái)實(shí)現(xiàn)實(shí)現(xiàn) VBA 編程中對(duì)編程中對(duì)Access的操作的操作。 例如,利用例如,利用DoCmd對(duì)象的對(duì)象的OpenReport方法來(lái)打方法來(lái)打開開“課程信息課程信息”報(bào)表的語(yǔ)句格式為報(bào)表的語(yǔ)句格式為: DoCmd.OpenReport 課程信息課程信息9.2.4 9.2.4 對(duì)象的事件對(duì)象的事件 事件是事件是 Access 窗體或報(bào)表及其上的控件等對(duì)象窗體或報(bào)表及其上的控件等對(duì)象可以可以“辯識(shí)辯識(shí)”的動(dòng)作,是對(duì)象對(duì)外部操作的響應(yīng),如的動(dòng)作,是對(duì)象對(duì)外部操作的
25、響應(yīng),如在程序執(zhí)行時(shí),單擊命令按鈕會(huì)產(chǎn)生一個(gè)在程序執(zhí)行時(shí),單擊命令按鈕會(huì)產(chǎn)生一個(gè)Click事件。事件。事件的發(fā)生通常是用戶操作的結(jié)果。事件在某個(gè)對(duì)象事件的發(fā)生通常是用戶操作的結(jié)果。事件在某個(gè)對(duì)象上發(fā)生或?qū)δ硞€(gè)對(duì)象發(fā)生。上發(fā)生或?qū)δ硞€(gè)對(duì)象發(fā)生。 Access 可以響應(yīng)多種類型的事件:鼠標(biāo)單擊、數(shù)可以響應(yīng)多種類型的事件:鼠標(biāo)單擊、數(shù)據(jù)更改、窗體打開或關(guān)閉及許多其他類型的事件。據(jù)更改、窗體打開或關(guān)閉及許多其他類型的事件。9.2.5 9.2.5 對(duì)象的事件對(duì)象的事件(續(xù))(續(xù)) Access 數(shù)據(jù)庫(kù)系統(tǒng)里,可以通過兩種方式來(lái)處數(shù)據(jù)庫(kù)系統(tǒng)里,可以通過兩種方式來(lái)處理窗體、報(bào)表或控件的事件響應(yīng)。一是使用宏對(duì)
26、象來(lái)理窗體、報(bào)表或控件的事件響應(yīng)。一是使用宏對(duì)象來(lái)設(shè)置事件屬性;二是為某個(gè)事件編寫設(shè)置事件屬性;二是為某個(gè)事件編寫 VBA 代碼過程,代碼過程,完成指定動(dòng)作,這樣的代碼過程稱為事件過程或事件完成指定動(dòng)作,這樣的代碼過程稱為事件過程或事件響應(yīng)代碼。響應(yīng)代碼。 每個(gè)對(duì)象都有一系列預(yù)先定義的事件集。例如,每個(gè)對(duì)象都有一系列預(yù)先定義的事件集。例如,命令按鈕能響應(yīng)單擊、獲取焦點(diǎn)、失去焦點(diǎn)等事件,命令按鈕能響應(yīng)單擊、獲取焦點(diǎn)、失去焦點(diǎn)等事件,可以通過屬性對(duì)話框中的可以通過屬性對(duì)話框中的“事件事件”選項(xiàng)卡查看。選項(xiàng)卡查看。 實(shí)際上,實(shí)際上,Access窗體、報(bào)表或控件的事件有很多,窗體、報(bào)表或控件的事件有很
27、多,其中一部分對(duì)象事件如表其中一部分對(duì)象事件如表9-5、表、表9-6、表、表9-7、表、表9-8、表表9-9所示。所示。表表9-5 9-5 窗體對(duì)象的部分事件窗體對(duì)象的部分事件事件事件說(shuō)明說(shuō)明 load窗體加載時(shí)發(fā)生事件 Unload窗體卸載時(shí)發(fā)生事件 Open窗體打開時(shí)發(fā)生事件 Close窗體關(guān)閉時(shí)發(fā)生事件 Click窗體單擊時(shí)發(fā)生事件 DblClick窗體雙擊時(shí)發(fā)生事件 MouseDown窗體鼠標(biāo)按下時(shí)發(fā)生事件 KeyPress窗體上鍵盤擊鍵時(shí)發(fā)生事件 KeyDown窗體上鍵盤按下鍵時(shí)發(fā)生事件注意:首次打開窗體時(shí),下列事件將按如下順序發(fā)生:注意:首次打開窗體時(shí),下列事件將按如下順序發(fā)生:O
28、pen事件事件 Load事件事件 Resize事件事件 Activate事件事件 Current事件事件表表9-6 9-6 報(bào)表對(duì)象的部分事件報(bào)表對(duì)象的部分事件事件事件說(shuō)明說(shuō)明 Open報(bào)表打開時(shí)發(fā)生事件 Close報(bào)表關(guān)閉時(shí)發(fā)生事件表表9-7 9-7 命令按鈕對(duì)象的部分事件命令按鈕對(duì)象的部分事件事件事件說(shuō)明說(shuō)明 Click 按鈕單擊時(shí)發(fā)生事件 DblClick 按鈕雙擊時(shí)發(fā)生事件 Enter 按鈕獲得輸入焦點(diǎn)之前發(fā)生事件 GetFoucs 按鈕獲得輸入焦點(diǎn)時(shí)發(fā)生事件 MouseDown 按鈕上鼠標(biāo)按下時(shí)發(fā)生事件 KeyPress 按鈕上鍵盤擊鍵時(shí)發(fā)生事件 KeyDown 按鈕上鍵盤按下鍵時(shí)發(fā)
29、生事件表表9-8 9-8 標(biāo)簽對(duì)象的部分事件標(biāo)簽對(duì)象的部分事件事件事件說(shuō)明說(shuō)明 Click標(biāo)簽單擊時(shí)發(fā)生事件 DblClick標(biāo)簽雙擊時(shí)發(fā)生事件 MouseDown標(biāo)簽上鼠標(biāo)按下時(shí)發(fā)生事件表表9-9 9-9 文本框?qū)ο蟮牟糠质录谋究驅(qū)ο蟮牟糠质录录录f(shuō)明說(shuō)明 BeforeUpdate 文本框內(nèi)容更新前發(fā)生事件 AfterUpdate 文本框內(nèi)容更新后發(fā)生事件 Enter 文本框輸入焦點(diǎn)之前發(fā)生事件 GetFoucs 文本框獲得輸入焦點(diǎn)時(shí)發(fā)生事件 LostFoucs 文本框內(nèi)容更新時(shí)發(fā)生事件 KeyPress 文本框內(nèi)鍵盤擊鍵時(shí)發(fā)生事件 MouseDown 文本框內(nèi)鼠標(biāo)按下鍵時(shí)發(fā)生事件9.
30、2.5 9.2.5 事件過程事件過程 事件過程是事件處理程序,與事件一一對(duì)應(yīng)。事件過程是事件處理程序,與事件一一對(duì)應(yīng)。它是為響應(yīng)由用戶或程序代碼引發(fā)的事件或由系它是為響應(yīng)由用戶或程序代碼引發(fā)的事件或由系統(tǒng)觸發(fā)的事件而運(yùn)行的過程。過程包含一系列的統(tǒng)觸發(fā)的事件而運(yùn)行的過程。過程包含一系列的 VBA 語(yǔ)句,用以執(zhí)行操作或計(jì)算值。語(yǔ)句,用以執(zhí)行操作或計(jì)算值。 用戶編寫的用戶編寫的VBA程序代碼是放置在稱為過程程序代碼是放置在稱為過程的單元中。例如,需要命令按鈕響應(yīng)的單元中。例如,需要命令按鈕響應(yīng) Click 事件,事件,就把完成就把完成 Click 事件功能的事件功能的VBA程序語(yǔ)句代碼放程序語(yǔ)句代碼
31、放置到該命令按鈕的置到該命令按鈕的 Click 事件的事件過程中。事件的事件過程中。9.2.6 9.2.6 事件過程事件過程(續(xù))(續(xù))事件過程的形式如下:事件過程的形式如下: Private Sub 對(duì)象名對(duì)象名_事件名()事件名() (事件過程代碼)(事件過程代碼) End Sub例例9-1 (9-1 (事件過程事件過程 例子)例子) 例例9-1 新建一個(gè)窗體并在其上放置一個(gè)命令新建一個(gè)窗體并在其上放置一個(gè)命令按鈕,然后創(chuàng)建命令按鈕的按鈕,然后創(chuàng)建命令按鈕的“單擊單擊”事件響應(yīng)過事件響應(yīng)過程。當(dāng)運(yùn)行該窗體時(shí),單擊該窗體中的命令按鈕,程。當(dāng)運(yùn)行該窗體時(shí),單擊該窗體中的命令按鈕,顯出一個(gè)含有顯
32、出一個(gè)含有“歡迎光臨!歡迎光臨!”文字的消息框。文字的消息框。例例9-1 9-1 (續(xù))(續(xù))圖圖9-7 命令按鈕的命令按鈕的“Click”事件過程代碼事件過程代碼 9.3 VBA9.3 VBA編程環(huán)境編程環(huán)境VBEVBE窗口窗口 Access提供了一個(gè)提供了一個(gè)VBA 的編程環(huán)境的編程環(huán)境VBE(Visual Basic Editor)窗口,即)窗口,即 Visual Basic 編輯器窗口,它編輯器窗口,它是編寫和調(diào)試是編寫和調(diào)試VBA程序代碼的重要環(huán)境。程序代碼的重要環(huán)境。9.3.1 9.3.1 進(jìn)入進(jìn)入VBEVBE編程環(huán)境編程環(huán)境Access模塊分成類模塊和標(biāo)準(zhǔn)模塊兩種。模塊分成類模塊
33、和標(biāo)準(zhǔn)模塊兩種。1進(jìn)入類模塊的進(jìn)入類模塊的 VBE 編程環(huán)境編程環(huán)境 對(duì)于類模塊,在窗體對(duì)于類模塊,在窗體 “設(shè)計(jì)視圖設(shè)計(jì)視圖” 入入 VBE 有如下三種方法:有如下三種方法: (1)單擊工具欄中的)單擊工具欄中的“代碼代碼”按鈕,便打開按鈕,便打開 VBE 窗口,進(jìn)窗口,進(jìn)入入VBE環(huán)境。環(huán)境。 (2)先打開某對(duì)象的)先打開某對(duì)象的“屬性屬性”對(duì)話框。在該對(duì)話框中單擊選對(duì)話框。在該對(duì)話框中單擊選擇擇“事件事件”選項(xiàng)卡。在該選項(xiàng)卡。在該“事件事件”選項(xiàng)卡中,選中某個(gè)事件并設(shè)選項(xiàng)卡中,選中某個(gè)事件并設(shè)置其屬性為置其屬性為“事件過程事件過程”選項(xiàng)。單擊選項(xiàng)。單擊“選擇生成器選擇生成器”對(duì)話框中的對(duì)
34、話框中的“代碼生成器代碼生成器”項(xiàng),單擊項(xiàng),單擊“確定確定”按鈕,便打開按鈕,便打開 VBE 窗口,進(jìn)窗口,進(jìn)入入 VBE 環(huán)境。這是進(jìn)入環(huán)境。這是進(jìn)入 VBE 環(huán)境最通用的最方便的方法之一。環(huán)境最通用的最方便的方法之一。 (3)右鍵單擊某控件,彈出快捷菜單。單擊該快捷菜單中的)右鍵單擊某控件,彈出快捷菜單。單擊該快捷菜單中的“事件生成器事件生成器”項(xiàng),顯出項(xiàng),顯出“選擇生成器選擇生成器”對(duì)話框。單擊對(duì)話框。單擊“選擇選擇生成器生成器”對(duì)話框中的對(duì)話框中的“代碼生成器代碼生成器”項(xiàng),單擊項(xiàng),單擊“確定確定”按鈕,便按鈕,便打開打開VBE窗口,進(jìn)入窗口,進(jìn)入VBE環(huán)境。此時(shí),系統(tǒng)已經(jīng)為該對(duì)象的默
35、認(rèn)環(huán)境。此時(shí),系統(tǒng)已經(jīng)為該對(duì)象的默認(rèn)事件自動(dòng)創(chuàng)建了事件過程的模板,例如,命令按鈕的默認(rèn)事件是事件自動(dòng)創(chuàng)建了事件過程的模板,例如,命令按鈕的默認(rèn)事件是 Click。9.3.1 9.3.1 進(jìn)入進(jìn)入VBEVBE編程環(huán)境編程環(huán)境(續(xù))(續(xù))2進(jìn)入標(biāo)準(zhǔn)模塊的進(jìn)入標(biāo)準(zhǔn)模塊的 VBE 編程環(huán)境編程環(huán)境 對(duì)于標(biāo)準(zhǔn)模塊,進(jìn)入對(duì)于標(biāo)準(zhǔn)模塊,進(jìn)入 VBE 有三種方法有三種方法: (1)在數(shù)據(jù)庫(kù)窗口對(duì)象列表上選擇)在數(shù)據(jù)庫(kù)窗口對(duì)象列表上選擇 “模塊模塊”,單,單擊工具欄上擊工具欄上 “新建新建” 按鈕,便打開打開按鈕,便打開打開 VBE 窗口,進(jìn)窗口,進(jìn)入入 VBE 環(huán)境環(huán)境。 (2)在數(shù)據(jù)庫(kù)對(duì)象窗口,單擊)在數(shù)據(jù)
36、庫(kù)對(duì)象窗口,單擊 “工具工具” 菜單中菜單中“宏宏” 級(jí)聯(lián)菜單中的級(jí)聯(lián)菜單中的 “Visual Basic編輯器編輯器” 選項(xiàng),選項(xiàng),便打開便打開 VBE 窗口,進(jìn)入窗口,進(jìn)入 VBE 環(huán)境。環(huán)境。 (3)在數(shù)據(jù)庫(kù)窗口對(duì)象列表上選擇)在數(shù)據(jù)庫(kù)窗口對(duì)象列表上選擇“模塊模塊”,雙,雙擊模塊對(duì)象列表中的某個(gè)模塊名,便打開擊模塊對(duì)象列表中的某個(gè)模塊名,便打開 VBE 窗口,窗口,進(jìn)入進(jìn)入 VBE 環(huán)境,并顯出該模塊已有的代碼。環(huán)境,并顯出該模塊已有的代碼。 9.3.2 VBE9.3.2 VBE窗口窗口9-14 VBE9-14 VBE窗口中的窗口中的“視圖視圖”菜單菜單1 1標(biāo)準(zhǔn)工具欄標(biāo)準(zhǔn)工具欄視圖視圖
37、 Microsoft Office Access 切換切換 Access 數(shù)據(jù)庫(kù)窗口。數(shù)據(jù)庫(kù)窗口。插入模塊插入模塊 用于插入新模塊。用于插入新模塊。運(yùn)行子過程用戶窗體運(yùn)行子過程用戶窗體 運(yùn)行模塊程序。運(yùn)行模塊程序。中斷中斷 中斷正在運(yùn)行的程序。中斷正在運(yùn)行的程序。終止運(yùn)行重新設(shè)計(jì)終止運(yùn)行重新設(shè)計(jì) 結(jié)束正在運(yùn)行的程序,重新進(jìn)入模塊設(shè)計(jì)狀態(tài)結(jié)束正在運(yùn)行的程序,重新進(jìn)入模塊設(shè)計(jì)狀態(tài)設(shè)計(jì)模塊設(shè)計(jì)模塊 設(shè)計(jì)模塊和非設(shè)計(jì)模塊切換。設(shè)計(jì)模塊和非設(shè)計(jì)模塊切換。工程資源管理器工程資源管理器 打開工程資源管理器窗口。打開工程資源管理器窗口。屬性窗口屬性窗口 打開屬性窗口。打開屬性窗口。對(duì)象瀏覽器對(duì)象瀏覽器 打開對(duì)
38、象瀏覽器窗口。打開對(duì)象瀏覽器窗口。圖圖9-15 VBE窗口中的標(biāo)準(zhǔn)工具欄窗口中的標(biāo)準(zhǔn)工具欄工程資源管理器窗口工程資源管理器窗口 單擊單擊 VBE 窗口菜單欄中的窗口菜單欄中的 “視圖視圖” 菜單中的菜單中的 “工程資源管理器工程資源管理器”命令,即可打開工程資源管理器命令,即可打開工程資源管理器窗口。窗口。 工程資源管理器窗口簡(jiǎn)稱工程窗口。在工程窗口工程資源管理器窗口簡(jiǎn)稱工程窗口。在工程窗口中的列表框當(dāng)中列出了應(yīng)用程序的所有模塊文件。單中的列表框當(dāng)中列出了應(yīng)用程序的所有模塊文件。單擊擊 “查看代碼查看代碼” 按鈕可以打開相應(yīng)代碼窗口,單擊按鈕可以打開相應(yīng)代碼窗口,單擊 “查看對(duì)象查看對(duì)象” 按
39、鈕可以打開相應(yīng)對(duì)象窗口,單擊按鈕可以打開相應(yīng)對(duì)象窗口,單擊 “切切換文件夾換文件夾” 按鈕可以隱藏或顯示對(duì)象分類文件夾。按鈕可以隱藏或顯示對(duì)象分類文件夾。 雙擊工程窗口上的一個(gè)模塊或類,相應(yīng)的代碼窗雙擊工程窗口上的一個(gè)模塊或類,相應(yīng)的代碼窗口就會(huì)顯示出來(lái)。口就會(huì)顯示出來(lái)。3 3屬性窗口屬性窗口 單擊單擊 VBE 窗口菜單欄中的窗口菜單欄中的 “視圖視圖” 菜單中的菜單中的“屬屬性性”命令,即可打開屬性窗口。在屬性窗口中,列出了命令,即可打開屬性窗口。在屬性窗口中,列出了所選對(duì)象的各個(gè)屬性,分所選對(duì)象的各個(gè)屬性,分 “按字母序按字母序” 和和 “按分類序按分類序” 兩種查看形式。可以直接在屬性窗
40、口中編輯對(duì)象的屬性,兩種查看形式??梢灾苯釉趯傩源翱谥芯庉媽?duì)象的屬性,這屬于對(duì)象屬性的這屬于對(duì)象屬性的“靜態(tài)靜態(tài)”設(shè)置方法;可以在代碼窗口設(shè)置方法;可以在代碼窗口內(nèi)用內(nèi)用VBA代碼編輯對(duì)象的屬性,這屬于對(duì)象屬性的代碼編輯對(duì)象的屬性,這屬于對(duì)象屬性的“動(dòng)動(dòng)態(tài)態(tài)”設(shè)置方法。設(shè)置方法。 注意:為了在屬性窗口中列出注意:為了在屬性窗口中列出 Access 類對(duì)象,應(yīng)類對(duì)象,應(yīng)首先打開這些類對(duì)象的首先打開這些類對(duì)象的 “設(shè)計(jì)設(shè)計(jì)”視圖。視圖。4 4代碼窗口代碼窗口 單擊單擊VBE窗口菜單欄中的窗口菜單欄中的“視圖視圖”菜單中的菜單中的“代碼窗口代碼窗口”命令,即可打開代碼窗口??梢悦?,即可打開代碼窗口
41、。可以使用代碼窗口來(lái)編寫、顯示以及編輯使用代碼窗口來(lái)編寫、顯示以及編輯VBA程序程序代碼。代碼。 實(shí)際操作時(shí),在打開各模塊的代碼窗口后,實(shí)際操作時(shí),在打開各模塊的代碼窗口后,可以查看不同窗體或模塊中的代碼,并且在它可以查看不同窗體或模塊中的代碼,并且在它們之間做復(fù)制以及粘貼的動(dòng)作。們之間做復(fù)制以及粘貼的動(dòng)作。5 5立即窗口立即窗口 單擊單擊 VBE 窗口菜單欄中的窗口菜單欄中的 “視圖視圖” 菜單中的菜單中的 “立即立即窗口窗口” 命令,即可打開立即窗口。命令,即可打開立即窗口。 在立即窗口中,可以鍵入或粘貼一行代碼,然后按下在立即窗口中,可以鍵入或粘貼一行代碼,然后按下 ENTER 鍵來(lái)執(zhí)行
42、該代碼。但是立即窗口中的代碼是不能存鍵來(lái)執(zhí)行該代碼。但是立即窗口中的代碼是不能存儲(chǔ)的。儲(chǔ)的。 若在立即窗口鍵入若在立即窗口鍵入“Print 19 Mod 7”,則在下一行輸,則在下一行輸出的結(jié)果是出的結(jié)果是 5。 若在立即窗口鍵入若在立即窗口鍵入“? 19 Mod 7”,則在下一行輸出的,則在下一行輸出的結(jié)果是結(jié)果是 5。 若在立即窗口鍵入若在立即窗口鍵入“? Mid(“Access”,3,2)”, 則在下一則在下一行輸出的結(jié)果是行輸出的結(jié)果是 ce。5 5立即窗口立即窗口(續(xù))(續(xù)) 注意,注意,“Print”命令與命令與 “?”命令的功能相同,都是在立命令的功能相同,都是在立即窗口輸出結(jié)果
43、值。即窗口輸出結(jié)果值。 此外,在此外,在VBE代碼中,若使用形如代碼中,若使用形如“Debug.Print 表達(dá)式表達(dá)式”的語(yǔ)句,也將在立即窗口中輸出該表達(dá)式的結(jié)果值。例如,的語(yǔ)句,也將在立即窗口中輸出該表達(dá)式的結(jié)果值。例如,語(yǔ)句語(yǔ)句 Debug.Print 3*5,將在立即窗口輸出結(jié)果值是,將在立即窗口輸出結(jié)果值是15。6. 6. 本地窗口本地窗口 7. 7. 監(jiān)視窗口監(jiān)視窗口6本地窗口本地窗口 單擊單擊VBE窗口菜單欄中的窗口菜單欄中的“視圖視圖”菜單中的菜單中的“本地窗口本地窗口”命令,即可打開本地窗口。命令,即可打開本地窗口。 在本地窗口中,可自動(dòng)顯示出所有在當(dāng)前過程在本地窗口中,可自
44、動(dòng)顯示出所有在當(dāng)前過程中的變量聲明及變量值。中的變量聲明及變量值。7監(jiān)視窗口監(jiān)視窗口 單擊單擊VBE窗口菜單欄中的窗口菜單欄中的“視圖視圖”菜單中的菜單中的“監(jiān)視窗口監(jiān)視窗口”命令,即可打開監(jiān)視窗口。命令,即可打開監(jiān)視窗口。 當(dāng)工程中有定義監(jiān)視表達(dá)式定義時(shí),就會(huì)自動(dòng)出當(dāng)工程中有定義監(jiān)視表達(dá)式定義時(shí),就會(huì)自動(dòng)出現(xiàn)?,F(xiàn)。9.3.3 VBE9.3.3 VBE環(huán)境中編寫環(huán)境中編寫VBAVBA代碼代碼1 1自動(dòng)顯示提示信息自動(dòng)顯示提示信息1 1自動(dòng)顯示提示信息自動(dòng)顯示提示信息(續(xù))(續(xù))2 2F1F1幫助信息幫助信息 在編寫在編寫 VBA 代碼時(shí),需要用到程序設(shè)計(jì)基代碼時(shí),需要用到程序設(shè)計(jì)基礎(chǔ)知識(shí),包括
45、礎(chǔ)知識(shí),包括 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ù)庫(kù)系統(tǒng)創(chuàng)建表對(duì)象時(shí)所涉及到的字段數(shù)據(jù)庫(kù)系統(tǒng)創(chuàng)建表對(duì)象時(shí)所涉及到的字段數(shù)據(jù)類型(除了數(shù)據(jù)類型(除了OLE對(duì)象和備注數(shù)據(jù)類型外),在對(duì)象和備注數(shù)據(jù)類型外),在VBA 中都有相對(duì)應(yīng)的數(shù)據(jù)類型。中都有相對(duì)應(yīng)的數(shù)據(jù)類型。 VBA 的標(biāo)準(zhǔn)數(shù)據(jù)類型如表的標(biāo)準(zhǔn)數(shù)據(jù)類型如
46、表9-10所示。在表所示。在表9-10中中列出了列出了VBA數(shù)據(jù)類型及其對(duì)應(yīng)的類型關(guān)鍵字、類型符、數(shù)據(jù)類型及其對(duì)應(yīng)的類型關(guān)鍵字、類型符、(用于變量命名的)前綴、所占的存儲(chǔ)空間及取值范圍(用于變量命名的)前綴、所占的存儲(chǔ)空間及取值范圍等內(nèi)容。其中的類型符即是類型聲明字符,它是附加到等內(nèi)容。其中的類型符即是類型聲明字符,它是附加到變量名上的字符,指出變量的數(shù)據(jù)類型,如變量名上的字符,指出變量的數(shù)據(jù)類型,如k$。數(shù)據(jù)數(shù)據(jù)類型類型類型類型關(guān)鍵字關(guān)鍵字類型類型符符前綴前綴存儲(chǔ)存儲(chǔ)空間空間取值范圍取值范圍字節(jié)型字節(jié)型Byte無(wú)無(wú)Byt1字節(jié)字節(jié)整型整型Integer%Int2字節(jié)字節(jié)-3276832767
47、長(zhǎng)整型長(zhǎng)整型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.79769313486232E308貨幣型貨幣型CurrencyCur8字節(jié)字節(jié) -922337203685477.5808 922337203685477.5
48、807字符串型字符串型String$Str暫不暫不定定定長(zhǎng)字符串可包含定長(zhǎng)字符串可包含0個(gè)字符個(gè)字符 216個(gè)字符個(gè)字符 變長(zhǎng)字符串可包含變長(zhǎng)字符串可包含0個(gè)字符個(gè)字符 231個(gè)字符個(gè)字符布爾型布爾型Boolean無(wú)無(wú)Bln2字節(jié)字節(jié)True或或False日期型日期型Date無(wú)無(wú)Dtm8字節(jié)字節(jié)100年年1月月1日日9999年年12月月31日日變體類型變體類型Variant無(wú)無(wú)Vnt暫不暫不定定1/1/10000(日期日期), 數(shù)字和雙精度同數(shù)字和雙精度同,文本和字符串同文本和字符串同 (1)字符串型()字符串型(String,類型符,類型符 $ ) 字符串是一個(gè)字符序列,包括除雙引號(hào)和字符串
49、是一個(gè)字符序列,包括除雙引號(hào)和 Entrer 鍵以外鍵以外可打印的所有字符。一個(gè)字符串的前后要用英文的雙引號(hào)可打印的所有字符。一個(gè)字符串的前后要用英文的雙引號(hào) 括括起來(lái),故英文的雙引號(hào)起來(lái),故英文的雙引號(hào) 作為字符串的定界符號(hào)。例如:作為字符串的定界符號(hào)。例如:2008 、劉劉 星星 和和 都是字符串型數(shù)據(jù)。字符串中的空格都是字符串型數(shù)據(jù)。字符串中的空格也是有效字符。也是有效字符。 字符串長(zhǎng)度是指該字符串所包含的字符個(gè)數(shù)。字符串長(zhǎng)度是指該字符串所包含的字符個(gè)數(shù)。 例如:例如:2008年年 的長(zhǎng)度為的長(zhǎng)度為5。 長(zhǎng)度為長(zhǎng)度為0的字符串(即的字符串(即 )稱為空字符串。)稱為空字符串。 字符串有兩
50、種,即變長(zhǎng)字符串與定長(zhǎng)字符串。變長(zhǎng)字符字符串有兩種,即變長(zhǎng)字符串與定長(zhǎng)字符串。變長(zhǎng)字符串的長(zhǎng)度是不確定的,變長(zhǎng)字符串最多可包含大約串的長(zhǎng)度是不確定的,變長(zhǎng)字符串最多可包含大約 20 億億 ( 231)個(gè)字符。定長(zhǎng)字符串的長(zhǎng)度是確定的,定長(zhǎng)字符串可個(gè)字符。定長(zhǎng)字符串的長(zhǎng)度是確定的,定長(zhǎng)字符串可包含包含 1 到大約到大約 64K ( 216 ) 個(gè)字符。個(gè)字符。 (2)布爾型數(shù)據(jù)(布爾型數(shù)據(jù)(Boolean) 布爾型數(shù)據(jù)只有兩個(gè)值:布爾型數(shù)據(jù)只有兩個(gè)值:True或或False。 布爾型數(shù)據(jù)轉(zhuǎn)換為其他類型數(shù)據(jù)時(shí),布爾型數(shù)據(jù)轉(zhuǎn)換為其他類型數(shù)據(jù)時(shí),True轉(zhuǎn)換轉(zhuǎn)換為為 -1,F(xiàn)alse轉(zhuǎn)換為轉(zhuǎn)換為0;其
51、他類型數(shù)據(jù)轉(zhuǎn)換為布;其他類型數(shù)據(jù)轉(zhuǎn)換為布爾型時(shí),爾型時(shí),0轉(zhuǎn)換為轉(zhuǎn)換為False,其他轉(zhuǎn)換為,其他轉(zhuǎn)換為True。(4)日期型數(shù)據(jù)()日期型數(shù)據(jù)(Date) 任何可以識(shí)別的文本日期數(shù)據(jù)可以賦給日期變量。任何可以識(shí)別的文本日期數(shù)據(jù)可以賦給日期變量?!叭掌谌掌?時(shí)間時(shí)間”類型數(shù)據(jù)必須前后用英文的井號(hào)類型數(shù)據(jù)必須前后用英文的井號(hào)“#”括括住。住。允許用各種表示日期和時(shí)間的格式。允許用各種表示日期和時(shí)間的格式。 日期可以用日期可以用“/”、“,”、“-”分隔開,可以是年、分隔開,可以是年、月、日,也可以是月、日、年的順序。時(shí)間必須用月、日,也可以是月、日、年的順序。時(shí)間必須用“:”分隔,順序是:時(shí)、分
52、、秒。分隔,順序是:時(shí)、分、秒。例如:例如:#1999-08-11 10:25:00 pm# 、#08/23/2008# 、#03-25-2007 20:30:00# 等都是有效的日期型數(shù)據(jù)。在等都是有效的日期型數(shù)據(jù)。在 VBA 中會(huì)自動(dòng)轉(zhuǎn)換成中會(huì)自動(dòng)轉(zhuǎn)換成 mm/dd/yyyy(月(月/日日/年)的形式。年)的形式。 (4)變體類型()變體類型(Variant) Variant 數(shù)據(jù)類型是所有沒被顯式聲明(用如數(shù)據(jù)類型是所有沒被顯式聲明(用如 Dim、Private、Public 或或 Static等語(yǔ)句)為其他類型變量的數(shù)據(jù)類型。等語(yǔ)句)為其他類型變量的數(shù)據(jù)類型。Variant 數(shù)據(jù)類型并
53、沒有類型符數(shù)據(jù)類型并沒有類型符。 變體類型是一種特殊的數(shù)據(jù)類型,除了定長(zhǎng)字符串類型及用變體類型是一種特殊的數(shù)據(jù)類型,除了定長(zhǎng)字符串類型及用戶自定義類型外,可以包含其他任何類型的數(shù)據(jù);變體類型還可戶自定義類型外,可以包含其他任何類型的數(shù)據(jù);變體類型還可以包含以包含Empty 、Error、Nothing 和和Null特殊值。使用時(shí),可以特殊值。使用時(shí),可以用用VarType 與與TypeName兩個(gè)函數(shù)來(lái)檢查兩個(gè)函數(shù)來(lái)檢查 Variant型變量中數(shù)據(jù)型變量中數(shù)據(jù)的具體對(duì)應(yīng)數(shù)據(jù)類型的具體對(duì)應(yīng)數(shù)據(jù)類型。 VBA中規(guī)定,如果沒有顯式聲明或使用類型說(shuō)明符來(lái)定義變中規(guī)定,如果沒有顯式聲明或使用類型說(shuō)明符來(lái)
54、定義變量的數(shù)據(jù)類型,默認(rèn)為變體類型(量的數(shù)據(jù)類型,默認(rèn)為變體類型(Variant)。)。9.4.2 9.4.2 變量變量 變量在程序運(yùn)行期間其值可以發(fā)生變化的量。實(shí)變量在程序運(yùn)行期間其值可以發(fā)生變化的量。實(shí)際上,變量是內(nèi)存中的臨時(shí)存儲(chǔ)單元,用于存儲(chǔ)數(shù)據(jù)。際上,變量是內(nèi)存中的臨時(shí)存儲(chǔ)單元,用于存儲(chǔ)數(shù)據(jù)。由于計(jì)算機(jī)處理數(shù)據(jù)時(shí),必須將數(shù)據(jù)裝入內(nèi)存,因此,由于計(jì)算機(jī)處理數(shù)據(jù)時(shí),必須將數(shù)據(jù)裝入內(nèi)存,因此,在高級(jí)語(yǔ)言編寫的程序中,需要將存放數(shù)據(jù)的內(nèi)存單在高級(jí)語(yǔ)言編寫的程序中,需要將存放數(shù)據(jù)的內(nèi)存單元命名,通過內(nèi)存單元名(即變量名)來(lái)訪問其中的元命名,通過內(nèi)存單元名(即變量名)來(lái)訪問其中的數(shù)據(jù)。數(shù)據(jù)。 一個(gè)
55、變量有三個(gè)要素:變量名、數(shù)據(jù)類型和變量一個(gè)變量有三個(gè)要素:變量名、數(shù)據(jù)類型和變量值。值。 在在VBA代碼中,通過變量名來(lái)引用變量。代碼中,通過變量名來(lái)引用變量。1. 1. 變量的命名變量的命名 變量名的命名規(guī)則如下:變量名的命名規(guī)則如下: (1)變量名的命名同字段命名一樣,變量名必須以)變量名的命名同字段命名一樣,變量名必須以字母(或漢字)開頭;字母(或漢字)開頭; (2)變量名可以包含字母、數(shù)字或下劃線字符,但)變量名可以包含字母、數(shù)字或下劃線字符,但不能包含標(biāo)點(diǎn)符號(hào)或空格;不能包含標(biāo)點(diǎn)符號(hào)或空格; (3)變量名的字符個(gè)數(shù)不能超過)變量名的字符個(gè)數(shù)不能超過 255 個(gè)字符;個(gè)字符; (4)變
56、量命名不能使用)變量命名不能使用 VBA 的關(guān)鍵字(如的關(guān)鍵字(如 For、To、Next、If、While 等)。等)。 注意:注意: VBA中的變量命名不區(qū)分字母大小寫,如中的變量命名不區(qū)分字母大小寫,如“a”和和“A”代表的是同一個(gè)變量。代表的是同一個(gè)變量。9.4.2 9.4.2 變量變量(例)(例) 例如,例如,a、b_1、st_x 等可以作為變量名,等可以作為變量名,但但 1a、b.1、x-1、y 5、s/3 不可作為變量名。不可作為變量名。 有一個(gè)空格有一個(gè)空格2.2.顯式變量顯式變量 變量先聲明(即先定義)后使用是較好的程序設(shè)計(jì)變量先聲明(即先定義)后使用是較好的程序設(shè)計(jì)習(xí)慣。可
57、以在模塊設(shè)計(jì)窗口的頂部說(shuō)明區(qū)域中習(xí)慣??梢栽谀K設(shè)計(jì)窗口的頂部說(shuō)明區(qū)域中,加入,加入Option Explicit 語(yǔ)句來(lái)強(qiáng)制要求所有變量必須先定義才語(yǔ)句來(lái)強(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 In
58、tegerDim j As Long, n As Single, t As String, f As Boolean, g 注意,變量注意,變量g 是定義成變體類型(即是定義成變體類型(即Variant)。)。2.2.顯式變量顯式變量 (續(xù))(續(xù))例如:例如: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 是變長(zhǎng)的字符串型變量,
59、是變長(zhǎng)的字符串型變量,xh 是定長(zhǎng)的是定長(zhǎng)的8個(gè)個(gè)字符長(zhǎng)度的字符串型變量。字符長(zhǎng)度的字符串型變量。 此外,下面這個(gè)聲明語(yǔ)句此外,下面這個(gè)聲明語(yǔ)句Dim a As integer,b As long,c As single也可以用類型符代替類型關(guān)鍵字來(lái)定義變量,即可以改也可以用類型符代替類型關(guān)鍵字來(lái)定義變量,即可以改寫為:寫為:Dim a%,b&,c! 3 3隱式變量隱式變量 隱式變量(或稱隱含變量)是指沒有直接定義,隱式變量(或稱隱含變量)是指沒有直接定義,借助將一個(gè)值指定給變量名的方式來(lái)建立的變量。當(dāng)借助將一個(gè)值指定給變量名的方式來(lái)建立的變量。當(dāng)在變量名稱后沒有附加類型符來(lái)指明隱含變量的數(shù)據(jù)
60、在變量名稱后沒有附加類型符來(lái)指明隱含變量的數(shù)據(jù)類型時(shí),默認(rèn)為變體類型。例如:類型時(shí),默認(rèn)為變體類型。例如: m = 168.95語(yǔ)句定義一個(gè)變體類型變量語(yǔ)句定義一個(gè)變體類型變量m值是值是168.95。下面語(yǔ)句建立了一個(gè)整型數(shù)據(jù)類型的變量。下面語(yǔ)句建立了一個(gè)整型數(shù)據(jù)類型的變量。 k% = 599.4.3 9.4.3 變量的作用域與生命周期變量的作用域與生命周期1變量的作用域變量的作用域 (1)局部變量)局部變量 在模塊的過程內(nèi)部聲明的變量稱為局部變量。局部變量在模塊的過程內(nèi)部聲明的變量稱為局部變量。局部變量?jī)H在過程代碼執(zhí)行時(shí)才可見。在子過程或函數(shù)過程中聲明的僅在過程代碼執(zhí)行時(shí)才可見。在子過程或函
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都市標(biāo)準(zhǔn)房屋租賃合同格式
- 2025年個(gè)體工商戶資產(chǎn)轉(zhuǎn)讓合同協(xié)議
- 簡(jiǎn)易分期付款合同樣本
- 國(guó)家資助貸款質(zhì)押履行合同
- 合作協(xié)議合同(中英文)范文
- 智慧型居家養(yǎng)老合同
- 2025年員工股權(quán)分配合同范文
- 2025年順豐同城配送合同樣本
- 2025年建筑石材供需合同樣本
- 2025學(xué)年教育系統(tǒng)校服采購(gòu)合同樣本
- 2025年01月福建省福利彩票發(fā)行中心片區(qū)管理員招考筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2024年07月國(guó)新國(guó)證期貨有限責(zé)任公司(海南)2024年招考2名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 國(guó)網(wǎng)標(biāo)書制作流程
- 健身新人直播流程
- 中醫(yī)藥臨床適宜技術(shù)
- 工業(yè)廠房水電安裝施工方案
- 城鄉(xiāng)規(guī)劃管理與法規(guī)系列講座課件-城市規(guī)劃依法行政案例
- 企業(yè)的生產(chǎn)過程課件
- 法規(guī)解讀丨2024新版《突發(fā)事件應(yīng)對(duì)法》及其應(yīng)用案例
- JGJ46-2024 建筑與市政工程施工現(xiàn)場(chǎng)臨時(shí)用電安全技術(shù)標(biāo)準(zhǔn)
- 2024年世界職業(yè)院校技能大賽高職組“關(guān)務(wù)實(shí)務(wù)組”賽項(xiàng)參考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論