本教材系統闡述了Visual Basic的基本語法、算法原理和編程方法,通過大量的實例展示了Visual Basic的程序設計思想。通過本教材的學習,讀者不僅能夠掌握使用Visual Basic編寫應用程序的方法,還能夠掌握多種程序設計的經典算法,提高自身的邏輯思維能力。 本教材主要內容包括: 第1章主要介紹Visual Basic的軟件界面、編程原理和程序設計方法;第2章主要介紹窗體及常用控件的用法;第3章主要介紹Visual Basic的基本語句和語法;第4章主要介紹程序的三種基本結構及相關算法;第5章主要介紹數組的應用;第6章主要介紹自定義過程、函數的定義及使用、變量的作用域與生命期;第7章主要介紹程序中的常見錯誤及程序調試的方法;第8章主要介紹文件的相關操作及文件控件;第9章主要介紹Visual Basic的圖形圖像編程;第10章主要介紹Visual Basic的數據庫編程。書中每章后均附有課后習題。 為便于教師授課和學生自學,本教材除有配套的實驗教程《Visual Basic程序設計實驗指導與習題匯編》外,還配有電子教案、例題源代碼、習題答案等課程資源。這些資源都可以在中國藥科大學慕課平臺(eclass.cpu.edu.cn)上免費下載。本書封面貼有清華大學出版社防偽標簽,無標簽者不得銷售。
本書融入作者多年教學心得,內容編排合理,講解詳細,采用先現象后原理的方式展開教學內容,符合讀者的認知規律。
語言通俗易懂,例題豐富且具有代表性,講解大量經典算法知識,幫助讀者更好地理解程序設計思想,提高邏輯思維能力。
本書有配套實驗教程《Visual Basic程序設計實驗指導與習題匯編》,方便使用主教材的教師進行理論和實驗內容的安排。
本書有配套的課程資源網站,提供豐富的教學大綱日歷、課件、例題源代碼、講課視頻、推薦參考書等課程資源,讀者可登錄清華大學出版社網站下載使用。
前言
Visual Basic程序設計“程序設計語言”是我國大部分高校針對本科生開設的一門計算機公共基礎課程。教育部高等學校計算機科學與技術教學指導委員會于2006年編寫的《關于進一步加強高等學校計算機基礎教學的意見暨計算機基礎課程教學基本要求》中指出,程序設計語言課程的教學目標為“掌握正確的程序設計方法與思路,具備初步的應用程序開發基礎”,教學內容要涉及“程序設計語言(包括面向過程及面向對象的程序設計語言)、程序設計基本方法、數據結構與算法基礎等”。本著這一指導思想,我們編寫了該套教材。本教材主要授課對象為高等院校非計算機相關專業的學生,因此選用了Visual Basic作為程序設計工具,因為Visual Basic是一款具有圖形用戶化界面、簡單易學的編程工具。對于初學者來說只需要花少量課時的學習就能掌握它的基本用法、開發出標準的Windows應用程序。這樣不僅可以讓學生快速掌握一款編程工具的用法、對此產生興趣,更重要的是,可以讓教師和學生將更多的精力投入到程序設計基本方法、數據結構與算法基礎的教與學上,這樣才能真正實現“程序設計語言”課程的教學目標。本教材編者來自于一所教育部直屬重點高校——中國藥科大學,該校在計算機基礎課教學方面一直保持著較高的教學水平。幾位編者均為具有多年教學經驗的優秀教師,教材中也溶入了編者多年來的教學心得。其中,第1章、第5章由海濱編寫,第2章、第6章、第10章由關媛編寫,第3章、第8章、第9章由張潔玉編寫,第4章、第7章由劉新昱編寫。全書由關媛進行統稿。感謝易治萍為本教材的部分課后習題提供素材。教材的主要特色在于: 內容編排合理,采用先現象后原理的方式展開教學內容,符合學生的認知規律;語言通俗易懂,例題豐富且具有代表性,重點突出;不僅細致地介紹了Visual Basic的基本語法,而且融入了大量的經典算法以幫助學生更好地理解程序設計的思想,提高學生的邏輯思維能力。為方便使用本教材的教師授課和學生自學,該理論課教材還有配套的實驗教程——《Visual Basic程序設計實驗指導與習題匯編》。該實驗教程對本教材起到了一個很好的輔助教學作用,其中的實驗內容可以幫助學生在實踐中提高編程能力,習題匯編可以讓學生在階段性的學習之后考察自己對所學知識的掌握情況,以鞏固所學知識。除此之外,本教材還配有電子教案、例題源代碼、習題答案等課程資源。這些資源都可以在清華大學出版社網站(www.tup.com.cn)上免費下載。限于作者的學識水平,書中的錯誤和疏漏在所難免,敬請讀者指正。
編者2016年8月Visual Basic程序設計教程(第2版)
目錄
Visual Basic程序設計第1章Visual Basic概述與程序設計方法11.1Visual Basic概述11.1.1Visual Basic的發展與特點11.1.2對象、屬性、方法和事件31.1.3界面與事件驅動41.2Visual Basic應用程序的創建61.2.1Visual Basic集成開發環境的界面61.2.2創建Visual Basic應用程序的一般步驟91.3程序設計與算法131.3.1程序設計方法概述131.3.2算法14習題116
第2章界面設計與常用控件172.1界面設計概述172.2窗體222.3常用控件272.3.1命令按鈕272.3.2文本框282.3.3標簽302.3.4列表框和組合框312.3.5圖片框與圖像控件342.3.6單選按鈕、復選框與框架352.3.7定時器控件372.3.8滾動條392.4菜單的設計402.4.1菜單編輯器的使用412.4.2彈出式菜單422.5對話框43Visual Basic程序設計目錄2.6多窗體界面設計442.6.1多重窗體442.6.2多文檔界面462.7鍵盤與鼠標事件462.7.1鍵盤事件472.7.2鼠標事件482.7.3對象的拖放48習題250
第3章Visual Basic程序設計基礎523.1Visual Basic程序的代碼組織方式與書寫規則523.1.1代碼的組織方式523.1.2代碼的書寫規則533.2數據類型543.2.1標準數據類型543.2.2用戶自定義數據類型573.3常量與變量583.3.1常量583.3.2變量593.4運算符與表達式623.4.1算術運算符與算術表達式623.4.2關系運算符與關系表達式643.4.3邏輯運算符與邏輯表達式663.4.4字符串連接運算符與字符串連接表達式673.4.5運算符的優先級683.5常用內部函數683.5.1數學函數683.5.2轉換函數693.5.3字符函數713.5.4日期和時間函數733.5.5格式化輸出函數743.6基本語句743.7數據的輸入與輸出773.7.1數據的輸入773.7.2數據的輸出78習題382
第4章Visual Basic的基本控制結構854.1順序結構854.2選擇結構864.2.1If語句864.2.2Select Case語句894.2.3選擇結構的嵌套914.2.4條件函數934.3循環結構954.3.1For…Next循環954.3.2Do…Loop循環974.3.3While…Wend循環1004.3.4循環結構的嵌套1014.3.5閑置循環與DoEvents語句1024.4使用基本控制結構實現簡單算法1044.4.1累加、連乘算法1044.4.2統計算法1064.4.3判斷素數算法1074.4.4求最大公約數、最小公倍數算法1094.4.5進制轉換算法1104.4.6字符串處理算法1134.4.7求通項和算法1164.4.8迭代法117習題4118
第5章數組1215.1數組概述1215.1.1數組的概念1215.1.2數組的定義1225.1.3數組的結構1245.2數組的基本操作1255.2.1數組元素的賦值1265.2.2數組元素的輸出1305.2.3數組函數及數組語句1345.3動態數組1365.3.1動態數組定義1365.3.2Erase語句1375.3.3動態數組應用1395.4控件數組1405.4.1控件數組的創建1415.4.2控件數組的應用1435.5數組的常用算法1455.5.1排序算法1455.5.2查找算法1495.6數組的綜合應用153習題5159
第6章過程1616.1概述1616.2Sub過程1626.2.1事件過程1626.2.2通用過程1636.2.3Sub過程的創建1656.2.4Sub過程的調用1666.2.5Sub Main過程1686.3Function過程1726.3.1Function過程的創建1726.3.2Function過程的調用1736.4參數傳遞1766.4.1形參與實參1766.4.2按值傳遞參數1776.4.3按地址傳遞參數1796.4.4數組參數1836.4.5可選參數與可變參數1886.4.6對象參數1896.5變量的作用域與生命期1906.5.1過程級變量1916.5.2模塊級變量1936.5.3全局變量1946.5.4同名變量1956.6遞歸過程196習題6200
第7章程序調試2057.1錯誤類型2057.1.1語法錯誤2057.1.2運行錯誤2077.1.3邏輯錯誤2087.2程序調試方法2097.2.1調試工具2097.2.2調試窗口2107.2.3調試手段2117.2.4調試步驟217習題7221
第8章文件2228.1文件概述2228.1.1文件的打開2228.1.2文件的關閉2238.1.3常用文件操作函數2238.2順序文件2258.2.1順序文件的寫操作2258.2.2順序文件的讀操作2268.2.3程序實例2288.3隨機文件2308.3.1Type類型的定義2308.3.2隨機文件的讀操作2308.3.3隨機文件的寫操作2318.4二進制文件2318.5文件管理控件2328.5.1驅動器列表框2328.5.2目錄列表框2338.5.3文件列表框2348.5.4程序實例236習題8237
第9章圖形與多媒體2419.1繪圖操作基礎2419.1.1坐標系統2419.1.2顏色設置2459.2圖形控件2479.2.1直線控件Line2479.2.2形狀控件Shape2489.3繪圖方法2529.3.1Pset方法2529.3.2Point方法2549.3.3Line方法2559.3.4Circle方法2569.3.5與繪圖有關的基本操作2589.4多媒體控件259習題9262
第10章數據庫程序設計26410.1數據庫概述26410.2數據庫的創建與訪問26510.2.1在Visual Basic中創建Access數據庫26610.2.2用Microsoft Access創建數據庫26810.2.3如何在Visual Basic程序中訪問數據庫27210.3Visual Basic的Data數據控件27410.3.1Data控件的常用屬性、方法和事件27410.3.2數據感知控件27510.4ADO訪問數據庫27610.4.1ADO數據控件27710.4.2ADO對象編程模型28110.5SQL結構化查詢語言28510.5.1SQL語句的基本組成28610.5.2SQL的常用語句28710.5.3SQL查詢語句的自動生成289習題10290
參考文獻292
第5章 數組在編程時常常遇到需要對一系列同類型的數據進行處理的問題,如果使用前面所介紹的簡單變量來處理這類問題會有很大困難。因為簡單變量之間是相互獨立、沒有內在聯系的,這就需要為不同的數據定義名稱不同的變量,當數據量較大時,變量的定義和處理過程將會非常的復雜而繁瑣。如果能夠給一個數據集合中的數據起一個共同的名字,用一組連續的編號來區分集合中的不同數據,那么就可以通過數據集合的名字和編號來表示其中的每個數據。采用這樣的方式表示數據將使得對大量數據的處理變得很方便。這樣的一種具有共同名稱、以編號來區別不同數據的數據集合就稱為數組。5.1數 組 概 述數組是具有相同類型的有序變量的集合。這些變量按照一定的規則排列,占據著一段連續的存儲單元。5.1.1數組的概念數組名的命名規則與簡單變量命名規則一樣。數組名不是代表一個變量,而是代表有內在聯系的一組變量,數組名中實際存放的內容是這組數據在內存中存放的首地址。數組內的每個成員稱為數組元素,數組元素就是一個個簡單變量,數組元素的類型也就是數組的類型。為了標識數組中的不同元素,每個數組元素都有各自的編號即下標,下標確定了數組元素在數組中的位置,可以用數組名和下標唯一地標識數組中的某個元素。數組元素的一般表示形式如下: 數組名(下標1\[,下標2,…\])其中,下標可以是常量、變量或算術表達式。當下標的值為非整數時,會自動進行四舍五入處理。如果只需一個下標就可以確定一個數組元素在數組中的位置,則該數組稱為一維數組。如果需要兩個下標才能確定一個數組元素在數組中的位置,則該數組稱為二維數組。以此類推,必須由N個下標才能確定一個數組元素在數組中的位置,則該數組稱為N維數組。因此,確定數組元素在數組中位置的下標個數就是數組的維數。通常把二維以上的數組稱為多維數組,Visual Basic規定數組的維數不得超過60。5.1.2數組的定義Visual Basic規定在使用一個數組之前必須對數組進行定義,確定數組的名稱和它的數據類型,指明數組的維數和每一維的上、下界的取值范圍,這樣系統就可以為數組分配一塊連續的內存區域,存放數組的所有元素。數組的每個元素在這個連續的內存區域內都占據各自特定的單元。Visual Basic程序設計第5章數組在Visual Basic中有兩種類型的數組: 固定大小數組和動態數組。在定義數組時就確定了數組的大小,并且在程序運行過程中不能改變其大小的數組稱為固定大小數組。在定義數組時不指明數組的大小,在程序運行時才根據需要確定其大小,即在程序運行中可以改變大小的數組稱為動態數組。1. 數組定義語句數組定義語句的一般形式如下: Public | Private | Static | Dim 數組名 (\[ 維界定義 \])\[As 數據類型 \]說明: (1) Public、Private、Static、Dim是作用域關鍵字,數組作用域的含義與變量作用域的含義類似(作用域的概念將在第6章中重點介紹),不同關鍵字的含義如表5\|1所示。表5\|1數組作用域說明關鍵字適 用 范 圍Public用于標準模塊的聲明段,定義全局數組Private和Dim用于模塊的聲明段,定義模塊級數組Dim用于過程中,定義局部數組Static用于過程中,定義靜態數組(2) “維界定義”的格式如下: \[ 下界1 To\] 上界1 \[\[, 下界2 To\] 上界2…\]格式中的下界1、上界1表示數組第一維下標的下界和上界,下界2和上界2表示數組第二維下標的下界和上界,以此類推。“下界”和關鍵字“To”可以缺省,缺省情況下數組元素下標的取值是從0開始,等價于“0 To上界”。如果代碼中有Option Basic 1聲明語句,則缺省的下界是從1開始,等價于“1 To上界”。例如,在窗體模塊的“通用”部分有下列數組說明語句: Dim a(3) As Integer,b(1 To 2,2) As SinglePrivate c(-6 To -2) As String6第一條語句等價于: Dim a(0 To 3) As Integer,b(1 To 2,0 To 2) As Single它定義了一個模塊級的一維整型數組a以及二維單精度型數組b。一維數組a共有4個數組元素,分別是a(0)、a(1)、a(2)、a(3)。二維數組b共有6個元素,分別是b(1,0)、b(1,1)、b(1,2),b(2,0)、b(2,1)、b(2,2)。第二條語句定義了一個模塊級的一維定長字符串型數組c,數組的維下界是-6,維上界是-2,共有5個元素,分別是c(-6)、c(-5)、c(-4)、c(-3)、c(-2)。每個元素都是一個6字符的定長字符串,占6個字節的內存空間,因此整個數組占30字節的內存空間。2. 數組的上、下界某維的下界和上界分別表示該維下標的最小值和最大值。維界的取值范圍不得超過長整型(Long)數據表示的范圍(-2 147 483 648~2 147 483 647),且下界必須小于等于上界。在定義固定大小數組時,只能用常量或常量表達式進行維界說明。如果數組定義語句中的維界不是整數,將自動按照CInt函數的方法對其進行四舍五入取整。例如: Dim x As IntegerConst N As Integer=10Dim a(5.5) As Integer'正確,該語句等同于Dim a(1 To 6) As IntegerDim b(1 To 35) As Integer'正確,該語句等同于Dim b(1 To 15) As IntegerDim c(N) As Integer '正確,該語句等同于Dim c(10) As IntegerDim d(0 To x) As Integer '錯誤,不允許使用變量做數組的維界說明注意: 若用符號常量說明數組的維界,那么該符號常量在說明語句之前必須已定義過。3. 數組的類型數組定義語句中“As 數據類型”用來聲明數組的類型,數據的類型即數組中元素的數據類型。數組的類型可以是Integer、Long、Single、Double、Date、Boolean、String(變長字符串)、Stringlength(定長字符串)、Object、Currency、Variant和自定義類型。若缺省As短語,則表示該數組是變體(Variant)類型。4. 數組的大小用數組說明語句定義數組,指定了各維的上、下界取值范圍,也就確定了數組的大小。所謂數組的大小就是這個數組所包含的元素的個數。數組的大小有時也稱為數組的長度,可用下面的公式計算得到: 數組的大小=第一維大小×第二維大小×…×第N維大小各維的大小=維上界—維下界 1例如,程序有下面的語句:Option Base 1Dim a(10) As IntegerDim b(5,-3 To -1) As String說明: Option Base 1語句只能位于模塊的通用部分,用以說明缺省下界的數組的元素下標默認是從1開始的。因此: 一維數組a的大小為10-1 1=10個數組元素。二維數組b的大小為(5-1 1)×\[-1-(-3) 1\]=5×3=15個數組元素。5. 數組元素的初始值數組說明語句不僅定義了數組的作用域,分配了存儲空間,而且還對數組元素的值進行了初始化。數組元素的初始值與變量的初始值相同,與元素的類型有關。即數值型數組元素的初始值為零,變長字符型數組元素的初始值為空字符串,定長字符型數組元素的初始值為指定長度個數的空格,布爾型數組元素的初始值為“False”,變體型數組元素的初始值是“Empty”。5.1.3數組的結構數組是具有相同數據類型的多個變量的集合,數組中的所有元素按一定順序存儲在連續的內存單元中。下面分別討論一維/二維/三維數組的結構。1. 一維數組的結構 一維數組的邏輯結構為一個線性隊列。假設有如下語句: Dim a(8) As Integer則數組a的邏輯結構為: a(0),a(1),a(2),…,a(6),a(7),a(8)由于內存也是線性結構,因此,一維數組的邏輯結構與其在內存中存放的次序是一致的。a(0) a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8)2. 二維數組的結構二維數組的邏輯結構為一張由行和列組成的二維表,與數學中的矩陣相同。二維數組的數組元素需要用兩個下標來標識,即要指明數組元素的行號和列號。假設有如下語句: Option Base 1Dim t(3,4) As Integer定義了一個二維數組t,其中行列下標的下界都是從1開始,行下標的上界為3,列下標的上界為4,因此這是一個3行4列的二維數組。該二維數組的邏輯結構示意如下: 第1列第2列第3列第4列第1行t(1,1)t(1,2)t(1,3)t(1,4)第2行t(2,1)t(2,2)t(2,3)t(2,4)第3行t(3,1)t(3,2)t(3,3)t(3,4)二維數組在內存中是“按列存放”在線性結構的內存中的。即先存放第一列的所有元素: t(1,1) t(2,1) t(3,1),接著存放第二列所有元素: t(1,2) t(2,2) t(3,2) ……直到存完最后一列的所有元素。二維數組t的元素在內存中的具體存放次序如下: t(1,1) t(2,1) t(3,1) t(1,2) t(2,2) t(3,2) t(1,3) t(2,3) t(3,3) t(1,4) t(2,4) t(3,4)3. 三維數組的結構三維數組是由行、列和頁組成的三維表。三維數組也可理解為幾頁的二維表,即每頁由一張二維表組成。三維數組的元素是由行號、列號和頁號共同來標識的。假設有如下語句: Option Base 1Dim p(2,3,2) As Integer定義了一個三維數組p,其中第一個數2標識了數組的行下標上界為2,第二個數3標識了列下標上界為3,第三個數2標識了頁下標上界為2。因此,這個三維數組有2頁、2行、3列共12個元素。三維數組p的邏輯結構示意如下: 第1頁p(1,1,1)p(1,2,1)p(1,3,1)p(2,1,1)p(2,2,1)p(2,3,1)第2頁p(1,1,2)p(1,2,2)p(1,3,2)p(2,1,2)p(2,2,2)p(2,3,2)三維數組在內存中是按“逐頁逐列”的規則存放的。即先對數組的第一頁中的所有元素按列的順序分配存儲單元,然后再對第二頁中的所有元素按列的順序分配存儲單元……直到數組的每一個元素都分配了存儲單元。三維數組p的元素在內存中的具體存放次序如下:p(1,1,1) p(2,1,1) p(1,2,1) p(2,2,1) p(1,3,1) p(2,3,1) p(1,1,2) p(2,1,2) p(1,2,2) p(2,2,2) p(1,3,2) p(2,3,2)5.2數組的基本操作由于數組元素的本質仍是變量,只不過是帶有下標的變量而已,所以對數組元素的輸入輸出操作可以與變量相同。但與普通變量不同的是,數組元素的下標是有序排列的,可以通過循環變量表示下標訪問不同的數組元素。因此在需要對整個數組或數組中連續的元素進行處理時,利用循環結構是最有效的方法。5.2.1數組元素的賦值〖*4/5〗1. 用賦值語句給數組元素賦值單個數組元素的賦值可以通過賦值語句來實現。例如: Dim a(3) As Integer,b(1 To 2,2) As Singlea(0)=10b(1,0)=1b(2,2)=52. 通過循環逐一給數組元素賦值若在一個For循環中用循環控制變量作為數組元素的下標,就可依次訪問一維數組的每一個元素。同樣使用雙重的For循環,用外層、內層循環的循環控制變量分別作為第一維、圖5\|1數組賦值輸出第二維的下標就可依次訪問二維數組的所有元素。以此類推,數組有N維就可以采用N重循環給數組的所有元素一一賦值。例如,下面程序的功能是: 在窗體輸出一個兩位隨機數構成的一維數組;在圖片框上輸出一個三位隨機數構成的二維數組。請注意代碼中循環控制變量作為數組元素下標的使用方法。程序的運行結果如圖5\|1所示。Option ExplicitOption Base 1Private Sub Form_Click()Dim a(10) As Integer,b(3,4) As IntegerDim i As Integer,j As IntegerPrint "一維數組: "For i=1 To 10 '使用循環給一維數組賦值并輸出a(i)=Int(90Rnd) 10Print a(i); '分號用于在一行上連續輸出數組元素Next iPrint'在窗體上換行Picture1.Print "二維數組: "For i=1 To 3 '利用二重循環給二維數組賦值并輸出For j=1 To 4b(i,j)=Int(900Rnd) 100Picture1.Print b(i,j);Next jPicture1.Print '在圖片框中換行Next iEnd Sub3. 用InputBox函數給數組元素賦值用InputBox函數可以實現通過彈出的輸入框給數組元素賦值。例如,下面程序的功能是: 用InputBox函數給數組元素賦值,并將數組元素以每行6個的形式輸出到文本框中。InputBox上有動態的提示信息,即用戶隨時知道在錄入第幾個元素的值。程序運行界面如圖5\|2所示。圖5\|2InputBox函數給數組元素賦值Option ExplicitOption Base 1Private Sub Form_Click()Dim a(12) As Integer,i As Integer,st As StringFor i=1 To 12a(i)=Val(InputBox("A(" i ")=","數組A賦值"))st=st Str(a(i))If i Mod 6=0 Then' 每行顯示6個數據st=st vbCrLf '這里也可通過Chr(13) Chr(10)實現換行End IfNext iText1=stEnd Sub注意: 本程序界面中文本框的MultiLine屬性必須設置為True,否則無法實現多行顯示。小提示: 利用InputBox函數從鍵盤輸入多個數值時,可以利用數字鍵區,輸完數字后按Enter鍵進行確認,這樣可以提高錄入數據的速度。由于在執行InputBox函數時程序會暫停運行等待輸入,并且每次只能輸入一個值,占用運行時間長,所以InputBox函數只適合輸入少量數據。如果數組比較大,需要輸入的數據較多,用InputBox函數給數組賦值就顯得不高效,這時可以運用文件操作從文件中批量地讀取和保存數據(參見教材第8章中有關文件的知識)。4. 用Array函數給數組賦值利用Array函數可以把一個數據集賦值給一個Variant變量,再將該Variant變量創建成一個一維數組。Array函數的一般使用形式如下: 變體變量名 =Array(\[數據列表\])注意: Array函數只能給Variant類型的變量賦值。“數據列表”是用逗號分隔的賦給數組各元素的值。函數創建的數組的長度與列表中的數據的個數相同。若缺省數據列表,則創建一個長度為0的數組。若程序中缺省Option Base 1語句或使用了Option Base 0語句,則Array函數創建的數組的下界從0開始;若窗體的通用部分有Option Base 1語句,數組的下界從1開始。例如執行如下程序,運行結果見圖5\|3(a)。圖5\|3Array函數的使用Option ExplicitOption Base 1Private Sub Form_Click()Dim a As VariantDim b(4) As Varianta=Array(5,6,7,8,9) 'a包含整型數組Print a(1); a(2); a(3); a(4); a(5)a=Array(5.51,6.31,7.61,8.11) 'a包含單精度型數組Print a(1); a(2); a(3); a(4)a="Visual Basic" 'a成為字符型變量Print ab=Array(1,2,3,4,5) '該語句有錯誤End Sub運行該程序,執行語句“a=Array(5,4,3,2,1)”,Array函數就創建了一維數組a,數組元素的類型是Integer。該數組的下標從1開始,共有a(1)、a(2)、a(3)、a(4)、a(5)等5個元素,它們的值分別是5、4、3、2、1。這里的a是一個包含數組的Variant變量,與類型是Variant的數組是完全不相同的,可再次用賦值語句“a=Array(1.51,2.31,3.61,4.11)”給a賦值,此刻Array函數創建的數組元素個數是4,數組元素的類型改為Single。也可以用普通的賦值語句給已包含數組的Variant變量a賦一個值,例如,a="NO Array"。執行該語句后,a不再包含數組,又成為一個普通的字符型變量。當執行語句“b=Array(1,2,3,4,5)”時,會產生一個“給數組賦值”的錯誤,如圖5\|3(b)所示,其原因是b目前已經是被定義為Variant類型的數組,而不是一個普通的Variant類型的變量。注意: 不可以用Array函數給非Variant類型的變量賦值。5. 用文本框數據給數組賦值對大批量的數據輸入,采用文本框輸入效率更高。輸入時可以采用Instr函數獲取分隔符的位置從而給數組元素賦值,也可以采用Split函數方便地給數組賦值。Split函數返回一個下標從零開始的一維數組,賦值號左邊必須是一個變體型變量。以下程序實現了用文本框給數組賦值,其運行結果如圖5\|4所示。Option ExplicitPrivate Sub Command1_Click()Dim a As Variant,i As Integera=Split(Text1,",") '逗號為數據分隔符For i=LBound(a) To UBound(a)Picture1.Print "A("; i; ")="; a(i)Next iEnd Sub如果在文本框Text1中輸入“27,584,987,21.68”,則運行程序后a會變成一個含有5個元素的數組,分別是a(0)=27,a(1)=584,a(2)=987,a(3)=21.68。圖5\|4Split函數獲取數組元素圖5\|5Instr函數獲取數組元素