2014年從業(yè)55 7g含excelvba開發(fā)技術_第1頁
2014年從業(yè)55 7g含excelvba開發(fā)技術_第2頁
2014年從業(yè)55 7g含excelvba開發(fā)技術_第3頁
2014年從業(yè)55 7g含excelvba開發(fā)技術_第4頁
2014年從業(yè)55 7g含excelvba開發(fā)技術_第5頁
已閱讀5頁,還剩97頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Excel2007是Office2007的組件之一,該軟件主要用來對表格數(shù)據(jù)進行管理、Excel2007發(fā)揮最大功效,可以借助于VBA開發(fā)各種電子表格應用程序。VBAExcel2007應用程序提供新的功能或增強現(xiàn)有的功能,從而減少用次開發(fā),則需要讀者能熟練地操作Excel軟件,并具有一定的程序設計能力。Excel2000/XP/2003/2007的各版本中。使用各版本的用戶都可以通過本書學習VBA知識。VB程序設計方面的礎,使初學者通過本書就可學習到完整的ExcelVBA程序設計的相關知識。應用程序開發(fā)中的高級內容,使讀者開發(fā)的Excel應用程序更專業(yè)。Excel2007的新增功能,以及實際開發(fā)應用程序中經(jīng)常要用到、而其他書籍很1Excel20071~3Excel開發(fā)平臺概述、使用宏、ExcelVBA的開發(fā)環(huán)境等內容。2VBA4~9VBA基礎、程序控制結構、使9章還詳細介紹了字符串和日期3Excel10~15Excel中常用對象的屬對象、Chart對象等常用對象的使用。第4部分用戶界面設計,包括16~21章,分別介紹了使用Excel內置框、創(chuàng)建522~25Office程序、處理文件、使用ADO數(shù)據(jù)庫、Excel2007與Internet等內容。6VBA26~30Excel加載宏、使用類模塊、操作VBE、使用WindowsAPI、制作應用程序的幫助等內容。731章為一個實例——進銷存管理系統(tǒng),本章詳細介經(jīng)驗。在閱讀本書前,讀者至少已經(jīng)掌握了以下的Excel操作技能:使用和函數(shù)本書由伍遠高主筆編寫。其他參與編寫和資料整理的人員有、陳冠軍、、程彩紅、、、、、、、、麻雪、領、、吝曉寧、、、、、、、、、、、、紀超、段桂東、顏盟盟、黃寶生、、石、陳超、牛曉輝、劉聰、任瀟、商斌、張雙、、李秀勁、李勝美、蔡文仙、杜陽陽、吳興亮、陳水望、黃任楨、梅、皇波、蛟、陳浩然、許、鞏長宇、黃金亮、姜艷超、李軍、李慶、彭志林、王志娟、、等。在此一并表示感謝!第10章系統(tǒng)桌面控 內容簡介Excel2007與以前版本相比,從操作界面到對象模型的變化都很大,例如,取消了菜單和,新VBAExcelVBA操作這些新他Office程序、處理文件、使用ADO數(shù)據(jù)庫、Excel2007與Internet、使用Excel加載宏、使用類模塊、操作VBEWindowsAPI、制作應用程序的幫助等內容。最后詳細介紹了一個進銷存管理系統(tǒng)本書知識全面,結構由淺入深,每個知識點以實例代碼進行介紹,使讀者可快速。適合需要用ExcelExcelVBAExcel應用程序的讀者,也適合大中專院校的學生閱讀,還可作為VBA的培訓。,。/伍遠高編著.—:ⅠE…Ⅱ.伍…Ⅲ.電子表格系統(tǒng),Excel2007–程序設計Ⅳ.館CIP(2009)第000381責任編輯:馮志強賴: 址:學研A 社總機 購 銷:新華書開 字數(shù):1042次:200921價 印次:200921調換。: 轉3103產(chǎn)品編號:031017-01 1部分Excel2007第1章Excel2007開發(fā)平臺概 Excel2007新增功 Excel版本簡 Excel2007的特 Excel2007的界 使用功能 用Excel開發(fā)應用程序的優(yōu) Excel應用程序結 Excel應用程序的構 面向對象編程機 Excel應用程序開發(fā)流 開發(fā)前的準備工 應用程序開發(fā)過 系統(tǒng)測 應用程序發(fā) 第2章使用 宏簡 什么是 使用宏的優(yōu) 創(chuàng)建宏的方 創(chuàng)建 在Excel2003中錄制 打開Excel2007的錄制宏功 在Excel2007中錄制 使用VB創(chuàng)建 管理 設置宏選 刪除 編輯 運行 使用快捷鍵運行 使用【宏】框運行 使用運行 使用菜單欄運行 使用快速運行 通過按鈕運行 打開工作簿自動運行 個人宏工作 了解個人宏工作 保存宏到個人宏工作 管理個人宏工作 宏的安全 打開包含宏的文 設置宏的安全 第3章ExcelVBA的開發(fā)環(huán) VBE簡 VBE概 進入 VBE操作界 VBE的子窗 工程資源管理窗 屬性窗 代碼窗 調整VBE子窗口位 定制VBE環(huán) 設置【編輯器】選項 設置【編輯器格式】選項 設置【通用】選項 設置【可連接的】選項 使用幫 打開幫助主界 查看對象屬 搜索關鍵 2部分VBA第4章VBA基 VBA簡 什么是 在Excel中使用VBA的優(yōu) VBA語法簡 了解VBA代 VBA字符 關鍵 標識 數(shù)據(jù)類 基本數(shù)據(jù)類 自定義數(shù)據(jù)類 枚舉類 常 直接常 符號常 系統(tǒng)常 變 變 變量的作用域和生存 局部變 模塊變 全局變 靜態(tài)變 運算符和表達 算術表達 比較表達 邏輯表達 連接運算表達 第5章程序控制結 VBA程序結構概 認識語 結構化程序設計的控制結 常用語 賦值語 注釋語 使用InputBox輸入 使用MsgBox函數(shù)顯示信 分支程 單分支語句—— 二分支語句——If...Then... 多分支語句——If...Then... 多分支語句——Select 循環(huán)程序結 了解循環(huán)程 For...Next語 Do...Loop語 ForEach...Next語 循環(huán)嵌 第6章使用數(shù) 數(shù)組簡 用數(shù)組保存工作表數(shù) 數(shù)組的維 數(shù) 一維數(shù) 數(shù) 設置數(shù)組默認下 初始化數(shù) 使用循環(huán)語句初始化數(shù) 用數(shù)組值初始化數(shù) 動態(tài)數(shù) 動態(tài)數(shù) 數(shù)組的清除和重定 操作數(shù)組的函 判斷數(shù) 查詢數(shù)組的下標范 數(shù)組使用實 數(shù)據(jù)排 幸運號 用數(shù)組填充單元格區(qū) 第7章使用過 過程的相關概 分解大過 過程的類 定義Sub過 使用框定義子過 使用代碼創(chuàng)建Sub過 定義Function函數(shù)過 使用框定義函數(shù)過 使用代碼創(chuàng)建Function過 過程的調 調用Sub過 調用Function過 過程的參數(shù)傳 形參與實參的結 按傳值方式傳遞參 按傳地址方式傳遞參 傳遞數(shù)組參 可選參數(shù)和可變參 可選參 可變參 遞歸過 常用過程實 計算個人所得 將數(shù)值轉換為表格的列 大寫金額轉換函 第8章管理模 模塊的分 管理標準模 插入模 刪除模 模塊的導入導 導出模 導入模 使用代碼窗 代碼編輯屬性/方法列 常數(shù)列 快速信 參數(shù)信 自動完成關鍵 第9章處理字符串和日 了解處理字符 字符串的計算字符串長 生成重復字符 用循環(huán)生成重復字符 用String函數(shù)生成重復字符 使用Space函數(shù)生成重復空 變換字符 大小寫字母轉換——Lcase函數(shù)和Ucase函 字符轉換——StrConv函 查詢字符編碼——Asc函 生成字符——Chr函 比較字符 使用比較運算 使用Like運算 使 p函 處理子字符 取左側子串——Left函 取右側子串——Rigth函 獲取部分子串——Mid函 刪除字符串兩側空 查找子串位置——InStr函 處理日期時間數(shù) 日期時間數(shù)據(jù)的保 獲取和設置日 生成日期/時間數(shù) 計算日期數(shù) 使用計時 3部分掌握Excel第10章Excel對象概 對象的概 了解對 對象的屬 對象的方 對象的對象變量和對象數(shù) 對象變 對象數(shù) 使用集 集合的概 集合中的對 集合的方法和屬 遍歷集合中的對 Excel對象模 Excel對象模型簡 常用對象簡 隱含使用對 使用對象瀏覽 認識對象瀏覽 用對象瀏覽器查看對象成 第11章使用Application對 了解Application對 Application對象常用屬 Application對象常用方 Application對象常用設置應用程序選 設置主窗口標題 控制狀態(tài) 控制編輯 控制鼠標指針形 控制應用程 控制屏幕更 控制信 顯示最近使用的文 模擬鍵盤輸 定時執(zhí)行過 自定義功能 調用Excel工作表函 快速跳 合并單元格區(qū) 激活Excel2007的功能區(qū)選項 處理用戶動 啟用Application編寫Application過 第12章使用Workbook對 了解Workbook對 Workbooks集 Workbook常用屬 Workbook常用方 Workbook常用控制工作簿集 新建工作 打開工作 打開文本文 工作簿是否存 工作簿是否打 控制工作 保存工作 更名保存工作 設置工作簿查看文檔屬 處理工作簿文件 響應用戶的動 自動打開關聯(lián)工作 拖動單元 退出前強制保存工作 保存工作 限制工作簿使用次 限制打 第13章使用Worksheet對 了解Worksheet對 Worksheets集 Worksheet對象的常用屬 Worksheet對象的常用方 Worksheet對象的常用管理工作 新增工作 刪除工作 獲取工作表 激活工作 選擇工作 選取前后工作 工作表保護狀 保護工作 撤銷工作表的保 判斷工作表是否存 工作 隱藏工作 移動工作 計算工作表打印頁 控制工作表中的處理超響應用戶操 選中某個區(qū) 設置滾動區(qū) 輸入相同數(shù) 輸入連續(xù)的數(shù) 增加快捷菜 限制選擇其他工作 隱藏工作 突出顯示當前位 第14章使用Range對 Range對象概 Range對象的常用屬 Range對象的常用方 Range對象 使用A1樣式單元 使用索引號單元 偏移單元 行或 查找數(shù)據(jù)區(qū)域邊 當前區(qū) 獲取已使用區(qū) 獲取區(qū)域獲取合并區(qū)域獲取指定類型的單元 合并區(qū)域的子區(qū) 區(qū)域內的單個單元 擴展單元格區(qū) 獲取單元格信 獲取單元格地 獲取區(qū)域信 統(tǒng)計區(qū)域中數(shù) 追蹤單元 按顏色統(tǒng)計單元格數(shù) 操作行 插入 插入 刪除 隱藏 設置行 設置列 管理批 插入批 查看批 隱藏/顯示批 刪除批 為輸入數(shù)據(jù)的單元格添加批 將原數(shù)據(jù)作批 操作單元 給單元格設置給單元格設置錯誤 判斷錯誤類 設置打印區(qū) 合并單元 拆分單元 限制單元格移動范 清除單元 刪除單元格區(qū) 設置單元格格 設置自動套用格 設置邊框 設置文本對齊格 單元格文本縮 設置文本方 設置自動換行格 設置縮小字體填 設置日期格 生成大寫金 設置單元格圖 設置條件格 第15章其他常用Excel對 使用Name對 添加名 修改名 顯示名稱的定 獲取Name對象的使用Window對 創(chuàng)建窗 調整窗口大 獲取窗口狀 拆分窗 設置窗口顯示比 設置工作簿顯示選 設置工作表網(wǎng)格 使用Chart對 創(chuàng)建圖表工作 創(chuàng)建嵌入圖 轉換圖表類 獲取圖表標題信 圖表的系列信 調整圖表的數(shù)據(jù) 將圖表保存為使用嵌入圖表4部分第16章使用Excel內置 了解Excel內置 使用FindFile打開文 獲取單個文件 獲取多個文件 調用Excel內置 使用內置框的初始 第17章創(chuàng)建自定義 新建窗 新建窗 設置窗體屬 添加控件到窗 工具 添加控 設置控件屬 控件屬 設置控件屬 調整窗體中的控 設置控件大 設置控件布 設置Tab鍵順 編寫代 編寫代 給控件編寫代 編寫窗體代 調用用戶窗 調試運行窗 調用用戶窗體基礎知 編寫調用用戶窗體的代 第18章使用標準控 常用屬 控件實例——進度 命令按 命令按鈕常用屬 命令按鈕常用按鈕實例——控制窗體顯 圖 圖像控件屬 圖像控件圖像實例——Ssh窗 文字 文字框常用屬 文字框的方 文字框常用文字框實例——數(shù)據(jù)輸入窗 復選 復選框屬 復選框復選框實例——設置Excel選 選項按 選項按鈕常用屬 選項按鈕常用選項按鈕實例——設置窗體字號和顏 列表 列表框常用屬 列表框的方 列表框實例——列表框間移動數(shù) 復合 復合框常用屬 復合框常用方 復合框常用復合框實例——微機配置 滾動 滾動條常用屬 滾動條常用滾動條實例——顯示比 旋轉按 旋轉按鈕常用屬 旋轉按鈕常用旋轉按鈕實例——修改日期和時 多 多頁控件常用屬 多頁控件常用多頁實例——報名登 RefEdit常用屬 RefEdit實例——設置單元格格 第19章使用ActiveX控 添加ActiveX控 什么是ActiveX控 添加ActiveX控件到工具 使用進度條控 進度條控件的常用屬 進度條控件的方 進度條實例——隱藏 使用圖像列表控 圖像列表控件簡 圖像列表控件的屬 圖像列表控件的方 添加圖像到ImageList控 圖像列表控件實 使用樹形視圖控 樹形視圖控件簡 樹形視圖控件常用屬 樹形視圖控件的常用方 樹形視圖控件常用樹形視圖控件實 使用列表視圖控 列表視圖簡 列表視圖控件常用屬 列表視圖控件常用列表視圖控件實 第20章使用 OfficeOpenXML的優(yōu) Excel2007OpenXML文件結 RibbonX控件簡 基本控 容器控 控件屬 控件回調函 自定義 手工方式自定義 使用UI編輯器自定義 自定義RibbonX實 組合內置 添加RibbonX到內置選項 RibbonX控件回調函數(shù)實 第21章使用 CommandBar對 CommandBars簡 CommandBars對象常用屬 CommandBars對象常用方 CommandBar對象常用屬 CommandBar對象常用方 列出命令 CommandBarControl對 CommandBarControls集合對 CommandBarControl對 列出內置命令欄控 自定義菜 菜單的構 創(chuàng)建新菜 自定義快捷菜 內置快捷菜 創(chuàng)建快捷菜 添加菜單項到內置快捷菜 隱藏/內置菜單 自定義內置創(chuàng)建5部分第22章控制其他Office程 OLE自動化技術簡 OLE簡 服務程 實例化對象變 控制Word程 了解Word對象模 打開Word文 獲取Word文檔中的數(shù) 批量創(chuàng)建Word文 控 了 對象模 打開演示文 創(chuàng)建演示文 控制Outlook程 了解Outlook對象模 用Outlook發(fā)送郵 獲取Outlook保存的郵 第23章處理文 常用文件操作語 文件管理語 創(chuàng)建文件語 向文件中寫入數(shù) 從文件中讀出數(shù) 文件對象模 文件對象模型簡 FSO對象 獲得文件信 獲取磁盤信 查看文件信 文件管 文件是否存 文 分離文件名和擴展 處理文件 創(chuàng)建文件 列出文件夾中的文 列出文件夾名 刪除所有空文件 處理文本文 創(chuàng)建文本文 工作表保存為文本文 添加數(shù)據(jù)到文本文 文本文件中的數(shù) 第24章使用ADO數(shù)據(jù) SQL結構查詢概 結構化查詢簡 查詢語句 插入語句 修改語句 刪除語句 ADO對象模 ADO對象模 Connection對 Recordset對 其他ADO常用對 使用ADO數(shù)據(jù)庫的步 Excel工作簿的數(shù)據(jù) 查詢工作表中的數(shù) 導入其他工作表數(shù) Access數(shù)據(jù)庫 導入Access數(shù) 添加數(shù)據(jù)到 修改記 刪除記 創(chuàng)建Access數(shù)據(jù) 列出所有表 表的字段信 第25 Excel2007與 管理超插入超用VBA創(chuàng)建超添加超到收藏 直接打開網(wǎng) 打開Internet上的工作 打開Web上的工作 用VBA代碼打開Web上的工作 使用Internet上的數(shù) 創(chuàng)建Web查 了解QueryTable對 用VBA創(chuàng)建Web查 帶參數(shù)的Web查 發(fā)布數(shù)據(jù)到 保存為網(wǎng) 用VBA代碼發(fā)布網(wǎng) 6部分VBA第26章使用Excel加載 加載宏的概 加載宏的類 加載宏的用 Excel中已有的加載 管理加載 載入加載 卸載加載 系統(tǒng)加載宏列 創(chuàng)建加載 創(chuàng)建Excel加載 創(chuàng)建COM加載 使用加載 使用Excel加載 使用COM加載 第27章使用類模 類模塊的概 什么是 類的作 理解 創(chuàng)建類模 建立對象 建立類的屬 創(chuàng)建PropertyGet過 創(chuàng)建PropertyLet過 創(chuàng)建類的方 類模塊的使用類模塊創(chuàng)建對 第28章操作 VBE簡 添加VBE對象模型的信任VBAVBE對象模 VBE對象模 了解VBE對象模 VBProject對 ponent對 Reference對 CodeModule對 顯示VBA工程相關信 查看工程信 查看部 查看用VBA控制VBA代 查看VBA過程 查看VBA代 導出代 導入代 在代碼中搜 動態(tài)添加VBA代 增加模 向模塊中添加代 工作表中動態(tài)增加按 創(chuàng)建動態(tài)用戶窗 第29章使用Windows WindowsAPI基 WindowsAPI概 在Excel中使用 函 調用API函 制作特殊窗 制作半透明窗 制作橢圓窗 制作不規(guī)則窗 獲取系統(tǒng)信 獲取內存狀 獲取鍵盤信 第30章制作應用程序的幫 認 幫助文件的構 準備幫助文 制作HTML幫助系 創(chuàng)建項目文 創(chuàng) 文 創(chuàng)建索引文 設置幫助文件的選 編譯生成幫助文 打開幫助文 給應用程序掛接幫 7部分第31章進銷存管理系 系統(tǒng)描 表格設 主界 商品信 銷 供 存貨統(tǒng) 銷售人 設計功能 設計功能區(qū)的 設計功能區(qū)各按鈕代 進貨模 商品供貨錄 商品信息錄 測試商品供貨功 進貨報 銷售模 設計銷貨 測試銷貨單功 銷售報 銷售業(yè)績報 庫存模 商品查 存貨統(tǒng) 庫存明 附錄 VBA程序調試技 VBA程序的模 設置斷 代碼調試運行方 監(jiān)視表達 使用本地窗 使用立即窗 附錄 ASCII碼 4VBAVBAVBAVBA數(shù)據(jù)類型、常數(shù)、變量、運算符和表達式等相關基礎知識,為進一步學習VBA編程打下VBA要了解什么是VBA,以及用VBA能做什么。VBAVisualBasicforApplication的縮寫,是一種應用程序自動化語言。所謂應用程序自動化,是指通過編寫程序讓常規(guī)應用程序(Excel、Word等)自動完成工作,如在Excel里自動設置單元格的格式、多張工作表之間的自動計算等。VBA是微軟應用程序開發(fā)語言——VBVB程序設計的經(jīng)驗,學VBA根據(jù)其嵌入軟件的不同,增加了對相應軟件中對象的控制功能。例如Excel的ExcelVBAExcelExcelExcel的自動化水平??梢杂煤芏痰臅r間在Excel環(huán)境中開發(fā)出一套完整的管理信息系統(tǒng)。Excel中使用VBA件給用戶即可完成文件的發(fā)布。VBAExcelVBAExcel應用程序都由一個工程表示,每個工程包含當前工作簿VBA代碼,本節(jié)介紹VBA代碼最基礎的內容。鍵詞EndSub結束。其結構如下:'說明在Sub之后是宏的名稱,宏名稱后是一對括號。在Sub和EndSub之間是每次Sub設置表頭格式()'快捷鍵:Ctrl+tActiveWindow.WindowState=Sub設置表頭格式()'快捷鍵:Ctrl+tActiveWindow.WindowState=xlNormalWithSelection.HorizontalAlignment=.VerticalAlignment=.WrapText=.Orientation=.AddIndent=.IndentLevel=.ShrinkToFit=.ReadingOrder=.MergeCells=FalseEndWithWith.Name.Name宋體.Size=.Strikethrough=.Superscript=.Subscript=.OutlineFont=.Shadow=.Underline=.ColorIndex=.TintAndShade=.ThemeFont=xlThemeFontNoneEndWithSelection.Font.Bold=TrueActiveWindow.WindowState=xlNormalEnd有一些固定的單詞(稱為關鍵字)經(jīng)常出現(xiàn),例如,Selection、With幾乎每行代碼中都包括句點,用來連接VBA語言中不同的要素。例如,VBA中具有特殊含義的字符,如+、–、*、/、>、<、=和各種標點綜上所述,在VBA代碼中可使用各種常見的符號。VBA中具有特殊意義的保留字或符號。這些關鍵字具多種類型。常用的關鍵字如表4-1所示。4-1VBA提示:VBA中,對關鍵字不區(qū)分大小寫,無論用戶是按大寫、小寫或大小寫混合的Enter鍵后,VBE將自動將關鍵字轉換為VBA程序中,為了區(qū)分過程、常數(shù)、變量、對象等,需要為這些過程、常數(shù)、變不能在標識符中使用空格、句點(.)、感嘆號(!)或@、&、$,#整型整型數(shù)據(jù)為16位(2個字節(jié))的數(shù)值形式,其范圍為–32768~32767之間。整型DimDimn1AsIntegerDimn%長整型長整型數(shù)據(jù)為32位(4個字節(jié))有符號的數(shù)值形式,其范圍從 。Long的類型字符為和號(&)單精度浮點型的范圍在負數(shù)的時候是從–3.402823E38~–1.401298E-45,而在正數(shù)的時候是從1.401298E-45~3.402823E38。單精度浮點型的類型字符為感嘆號(!)雙精度浮點型貨幣型為64位(8個)10000154位數(shù)字。這種表示法的范圍可以從–9223372654775808~22337208477.5807。貨幣為at號()。字節(jié)型字符串"Microsfot"MicrosfotVisualBasic""歡迎使用VBA"Dimstr1AsStringDimDimstr1AsStringDimstr2AsString*10定義后將一直占用10個字符位置。布爾型轉換Boolean值為其他的數(shù)據(jù)類型時,F(xiàn)alse成為0,而True成為–1。日期型11999912310:00:0023:59:59#1Jan93#日期型變量會根據(jù)計算機中的短日期格式來顯示。時間則根據(jù)計算機的時間格式值則表示時間。午夜為00.5。負整數(shù)表示18991230日之前的日期。對象型VBA是面向對象的程序設計語言,用戶可在程序中各種對象,例如,Excel的工必須使用Set語句給對象變量賦值,對象變量使用結束后,應為其賦值為Nothing。如:DimMyObjectAsSetMyObject=Worksheets("sheet1")SetMyObject=Nothing

'賦值對 變體型變體型是VBA中的一種特殊數(shù)據(jù)類型,所有沒有被數(shù)據(jù)類型的變量都默認為變體型。變體型數(shù)據(jù)是所有沒被顯式(用如Dim、Private、Public或Static等語句——變String數(shù)據(jù)及用戶定義類型外,可以包含任函數(shù)或TypeName函數(shù)來決定如何處理變體型中的數(shù)據(jù)。As數(shù)據(jù)類型AsEndTypeTypeProductNameAsStringtyAsIntegerPriceAsCurrencyOrderAsIntegerEnd便地處理Excel工作表中的數(shù)據(jù)。使用Type語句了一個用戶自定義類型后,就可以在該范圍內的任何位置聲Type語句進行定義。一般情況下,記錄類型在模塊中定義,其變量可以出現(xiàn)在VBA工程的任何地方。4-1所示的工作表中每行數(shù)據(jù)產(chǎn)品名稱、庫存量、單價、訂購量等數(shù)據(jù)。VBAProduct,然后在程序中使用4-1TypeTypeProductNameAsString tyAsInteger PriceAs OrderAsInteger EndTypeSubDimp1AsWithWorksheets("商品")p1.ProductNameCells(32)p1.Price=.Cells(3,6) ty=.Cells(3,7)p1.Order=.Cells(3,8)EndEnd4-2xlHAlign 值 –7–51–––PublicPublic|PrivateEnum類型名稱成員[=常數(shù)表達式]常數(shù)表達式EndPublicPublicEnumEnd1,“六年級”表示常數(shù)6。PublicPublicEnum一年級EndGrade枚舉類型后,即可在代碼窗口中使用該類型,在定義為變量時將Grade4-2所示。給枚舉類型變量賦值時,在代碼窗口中將自動列出枚舉類型的成員,如圖4-3所示。圖4-2定義枚舉變 圖4-3使用枚舉 3.14、255等僅表示它自身取值的數(shù)據(jù)叫常數(shù)。常數(shù)的值在程序執(zhí)行之前就已經(jīng)確定,執(zhí)行VBA程序中可以直接使用的量。根據(jù)表示的數(shù)據(jù)類型不同,直接常 "Excel"ExcelVBA 到精通 體的意義。例如,#8/8/2008#是正確的,而#4/31/2008#是錯誤的,因為4月沒有31日。輸入日期時,VBE自動將其兩個“# Windows操作系統(tǒng)中的設置相關。例如,#8/13/08#可能表示2008813日。

4-4為該常數(shù)命名,在需要使用該常數(shù)的地方其常數(shù)名即可。有確定的值。VBA中可使用Const關鍵字定義符號常數(shù),其語法格式如下:Const常數(shù)標識符As數(shù)據(jù)類型=符號常數(shù)表達 其中,Const為定義符號常數(shù)的關鍵字,符號常數(shù)表達式計算出來的值保存在常數(shù)名中,如果在常數(shù)時沒有顯式地使用Astype子句,則該常數(shù)的數(shù)據(jù)類型是最適合其表ConstConstMAXCOL=ConstMyIntAsInteger=ConstBOOKNAME="ExcelVBA 到精通ConstBOOK= Office"+BOOKNAME 以上代碼使用前面定義的 Excel中的各對象,ExcelVBA預定義了許多常數(shù),這些常數(shù)稱為系統(tǒng)常數(shù)。提供對象庫的其他應用程序(Access、Excel、ProjectWord等)也提供常數(shù)列表,VBA中,系統(tǒng)常數(shù)名采用大小寫混合的格式,其前綴表示定義常數(shù)的對象庫名。等幾個)作為前綴,而VB中的系統(tǒng)常數(shù)名通常都是以小寫的vb作為前綴。提供了很多Msgbox常數(shù),用vbOKOnly表示框只有【確定】按鈕,比用數(shù)值0更直“常數(shù)”的所有幫助條目,如圖4-5所示。在查找到的信息中單擊【VisualBasic常數(shù)】按鈕,可顯示VBA常數(shù)的分類,如圖4-6左圖所示。單擊分類【Color常數(shù)】按鈕即可查看具體的常數(shù),如圖4-6右圖4-54-6常數(shù),單擊【搜索】按鈕,將顯示Msgbox的相關常數(shù),如圖4-7所示。4-7 VBAVBA按照變量的數(shù)據(jù)使用Dim變量,其語法格式如下:Dim變量名[As數(shù)據(jù)類型 Dim和As為變量的關鍵字數(shù)據(jù)類型為前面介紹的類型關鍵字,例如,String、Date型包含進來。在下面的語句中,變量intX、intY與intZ被為Integer類型。DimintXAsInteger,intYAsInteger,intZAs 用隱式變量時,VBAVariant類型。在為其指定值之前,其值Empty;當為它賦值后,會采用所賦值的類型作為變量的類型。使用隱式的方法,看起來很方便。但是,當程序很大或很復雜時,這種Option VBA應用程序中,將使用很多的變量,有些變量可在整個應用程序中使用,而另值自動。這類變量用Dim關鍵字進行定義。ExcelVBA的某個模塊頂端定義的變量,在該模塊的各過程中都可模塊級別變量。這類變量在模塊的開始部分使用Dim或Private關鍵字進行定義。用的變量。這類變量在模塊的開始部分用Public關鍵字進行定義。在過程中使用Static關鍵字的變量稱為靜態(tài)變量,這類變量在整個應用程序中有碼創(chuàng)建了變量strName并且指定為String數(shù)據(jù)類型。DimstrNameAs Dims1AsStrings1測試局部變量"MsgBoxs1EndEndSubs1MsgBox4-82”中直接使用MsgBox顯示s1中的值,因為該過程中并未定義變量s1的值,所以顯示框中無任何信息,如圖4-8右圖所示。4-8DimPrivatePrivate語句可以更容易地和解釋代碼。使用兩個語句變量的語法格式完全相同。在模塊的【】部分,輸入變量的代碼,如圖4-9所示PrivatestrNameAs 圖4-9模塊變SubSub測試模塊變量()strName=" MsgBox軟件設計:&strNameEndSubSub顯示模塊變量的值EndstrNameMsgBoxstrName的值。接著運行過程“顯示模塊變量的值”,在該過程中未對模塊strNamestrName為模塊變量,在“測試模塊變量”過程中已經(jīng)賦值,所如果首先運行過程“顯示模塊變量的值”,MsgBox框將不會顯示任何值使用Public語句公共模塊級別變量。全局變量可用于工程中的任何過程。如果全局變量是于標準模塊或是類模塊中,則它也可以被任何到此全局變量所屬工程的。在VBE中雙擊模塊“變量作用域”,在模塊的部分使用以下代碼全局PublicstrAppNameAs SubSub初始化全局變量strAppNameExcel測試應用程序"MsgBoxstrAppNameEndSub顯示全局變量的值()Sub顯示全局變量的值()End圖4- 全局變 圖4-11在其他模塊中全局變靜態(tài)變量的方法是,在過程內部用Static關鍵字一個或多個變量,其用法StaticintCountAs SubSub靜態(tài)變量測試Dimi1AsIntegerStatici2AsIntegeri1=i1+1i2=i2+MsgBox局部變量的值:&i1&vbNewLine&_"靜態(tài)變量的值:"&i2,vbOKOnlyEndSub測試Fori=1To5EndSub4-12左圖所示的結果,由圖可看出局部變量和靜態(tài)變量的值都為1。單擊【確定】按鈕將再次顯示類似的框,單擊多次【確定】4-12在“靜態(tài)變量測試”過程中將變量i1為局部變量,該過程執(zhí)行時進行初始化,執(zhí)行完后就自動釋放,所以,無論該過程執(zhí)行多少次,輸出的結果都為1。而變量i2為靜態(tài)變量,只有第一次進入過程時才進行初始化操作,當退出該過程+、都是VBA4種基本的運算,即算術運算、比較運算、邏輯運算和連接運算。由這些運算符連接操作數(shù)可組成4種不同的表達式。4-3優(yōu)先 ^1–2*、3\45+、62+4=6,8- 4-4 =<>Debug.PrintDebug.Print"A">"B"Debug.Print"A">"a"Debug.Print2<=5理解。而對于字符串的比較,在VBA中有特殊的規(guī)定。比較字符串時,按字母的ASCIIAASCII65,而字母“BASCII66 圖4-13立即窗Debug.Print"A"> Debug.Print2> 出如圖4-14所示的錯誤提示信息。4-14可能。表4-5列出了邏輯運算操作符及其優(yōu)先級。4-5優(yōu)先 1Not2XAnd3XOr4XXor5XEqv6XImp則各種邏輯運算符的運算結果如表4-6的真值表所示。4-6FFTTFTFTNotTTFFAAndFFFTAOrFTTTAXorFTTFAEqvTFFTAImpTTFTVBA"連接運算符在MsgBox中使用得很多,例如:MsgBox"局部變量的值:"&i1&vbNewLine&"靜態(tài)變量的值:"&i2, 5VBAVBA的程序代碼中,語句是構成程序的基本成分,是程序的主體部分。每個語句以Enter鍵結束。VBA語句后,VBE將按一定的規(guī)則進行簡單的格式化處理。例如,將關鍵字的VBAMsgBox時,無論輸自動將其變?yōu)镸sgBox。VBAEnter鍵完成語句的輸入后,各關鍵字之間無論插入多少空格,VBE都將其自動調整為一個空格。例如,輸入worksheets("sheet1"). DimstrNameAsString:strName=高DimDimstrNameAsStringstrName=" VBEVBA1023個字符。但是,為了使程序便于MsgBox"局部變量的值:"&i1&vbNewLine&"靜態(tài)變量的值:"&i2, MsgBoxMsgBox局部變量的值:&i1&vbNewLine_&"靜態(tài)變量的值:"&i2,vbOKOnlyVBAGoTo轉移語句可以使程序的控制流程強制性地轉向程序的任一處。如果一個程序結構化程序中的任意基本結構都具有唯一和唯一出口,并且程序不會出現(xiàn)死循環(huán)。在程序的靜態(tài)形式與動態(tài)執(zhí)行流程之間具有良好的對應關系。順序結構就是從頭到尾依次按順序逐條執(zhí)行語句,不需要控制語句。本節(jié)介紹[Let]變量名=表達 在VBA中可省略賦值關鍵字Let,變量名必須遵循標識符名約定。只有當表達式是一種與變量兼容的數(shù)據(jù)類型時,該表達式的值才可以賦給變量或屬性。不能將字符串表達式的值賦給數(shù)值變量,也不能將數(shù)值表達式的值賦給字符串變量。如果這樣做,就會在編譯時出現(xiàn)錯誤。VariantNullVariantVariant的值可以解釋為某個數(shù)時才能賦給數(shù)值變量??梢允褂肐sNumeric函數(shù)來確認Variant是否可以轉換為一個數(shù)。 SubSub賦值數(shù)據(jù)類型轉換DimiAsDimsAsStringDimDimsAsStringDimbAsBooleanDimvi=3.14s=3.14b=3.14v=End5-1的執(zhí)行結果可知道,將單精度類型的數(shù)據(jù)賦值給整0True,0False。

5-1Rem注釋文 '注釋文 在VBE中,【編輯】提供了兩個按鈕:【設置注釋塊】和【解除注釋塊】如圖5-2所示。5-2一種是VB中常用的InputBox函數(shù),在該輸入框中顯示提示信息,等待用戶輸入正文或按下【確定】或【取消】按鈕,并返回包含文本框的內容,該框返回值類型為字符串,如圖5-3所示。一種是使用Application對象的InputBox方法顯示一個輸入框,在該框中設置輸入值的類型,如圖5-4所示。圖5-3InputBox函數(shù) 圖5-4InputBox方法顯示InputBox函數(shù)使用VBA提供的InputBox函數(shù),可產(chǎn)生一個輸入框。該函數(shù)將打開一個框Prompt:為框消息出現(xiàn)的字符串表達式。其最大長度為1024個字符。如果需常數(shù)vbCrLf代表回車換行符。Title:為框標題欄中的字符串。如果省略該參數(shù),則把應用程序名放入標題Xpos,Ypos:這兩個參數(shù)必須成對出現(xiàn),指定框的左上角坐標位置。如果省SubSub使用InputBox函數(shù)()DimsPromptAsStringDimsTitleAsStringDimsDefaultAsStringDimsReturnAsStringsPrompt="請輸入用戶 sTitle="輸入 sDefault=" sReturn=InputBox(sPrompt,sTitle,sDefault)Debug.PrintsReturnEnd執(zhí)行上面的代碼,將顯示如圖5-5所示的框。在使用InputBox函數(shù)時,應注意以下幾點:符串類型,而不是變體類型。如果需要使用該函5-5InputBoxVal函數(shù)(或其他的轉換函數(shù))將返回值轉換為相應類在框中,如果用戶單擊【取消】按鈕(或按Esc鍵),則表示不使用當前輸InputBox函數(shù),只能返回一個值,如果需要輸入多個值,則必須多次調顯示InputBox方法使用Application對象的InputBox方法,也可顯示一個接收用戶輸入的框。此框有一個【確定】按鈕和一個【取消】按鈕。如果單擊【確定】按鈕,則InputBox方法將返回框中輸入的值。如果單擊【取消】按鈕,則InputBox方法返回邏輯值Default,Left,Top,InputBox函數(shù)相同,只是在最后多了一個例如,對于一個可接受文本和數(shù)字的輸入框,將Type設置為1+2。0:4:邏輯值(True或16SubSub使用InputBox方法()SetmyCellApplication.InputBox_prompt:="選擇一個單元格",Type:=8)End運行以上代碼,將顯示如圖5-6所示框,用鼠標單擊一個單元格,該單元格的引圖5-6使用InputBox方法顯示使用MsgBox函數(shù)可打開一個框,在框中顯示消息,等待用戶單擊按鈕,并 51Inputbox數(shù)目及形式、使用提示圖標樣式、默認按鈕以及消息框的強制響應等。其常數(shù)值如表5-15-1 值 01 值 2345WarningQuery00第一組值(0~5):用來決定框中按鈕的類型與數(shù)量。按鈕共有7種,即確第二組值(16,32,48,64):用來決定框中顯示的圖標。共有4種,即暫的周轉有虛線,按Enter鍵可執(zhí)行該按鈕的單擊代碼。得到的框如圖5-8所示。圖5-7MsgBox效果 圖5-8MsgBox效果MsgBox函數(shù)除了顯示提示信息之外,還可返回一個整數(shù)值,這個整數(shù)與所選擇的按鈕有關。MsgBox函數(shù)顯示的框有7種按鈕,返回值與這7種按鈕相對應,分別為5-2MsgBox 值 1234567輸入加號將再次顯示buttons的常數(shù)列表,如圖5-9所示。5-9MsgBoxDimintReturnAsintReturnMsgBox("真的退出系統(tǒng)碼?vbYesNovbQuestion,提示")IfintReturn=vbYesThenApplication.QuitEnd執(zhí)行以上代碼,將顯示如圖5-10所示框。單擊【是】按鈕,將執(zhí)行Quit方法退Excel。單擊【否】按鈕,將返回應用程序。提示:MsgBox圖5-10提示If邏輯表達式Then語 TrueThen后的語句,執(zhí)行完成后執(zhí)的下一條語句。其流程圖如圖5-11所示。5-11If…Then ="工程師"Then工資=工資+100 ="工程師"Then工資=工資+100 執(zhí)行以上語句,如果為工程師,則工資增 IfIf邏輯表達式格式不用EndIf語句,而塊語句則必須在條件語句的結束處有EndIf。 工程師+崗位津貼崗位津貼+End二分支語句——IfThenIf…Then語句中,當邏輯表達式的值為False時,不執(zhí)行任何語句,若要求在邏輯FalseIf...Then…Else語句,其語法格式IfIf邏輯表達式End在以上語句結構中,VBA首先判斷邏輯表達式的值,若其值為True,則執(zhí)行語句序其流程圖如圖5-12所示。5-12If…Then…ElseSubSub填 WithWorksheets("員工")If.Cells(3,5)= ".Cells(317女".Cells(317男EndWithEnd5-13IfThenElse多分支語句——IfThenIf…Then…ElseIfIfIf1End塊后,再執(zhí)行EndIf后面的代碼。其流程圖如圖5-14所示。5-14IfThenElseIfSubSubIf多分支程序Dimstr1AsString DimsPromptAsString DimsTitleAsString DimsDefaultAsString默認值DimsTempAsStringsPrompt="請輸入員工的 :"&vbNewLine&_"1:高級工程師"&vbNewLine&_"2:工程師"&vbNewLine&_"3:助理工程師&vbNewLine&_"4:技術員"&vbNewLine&_ sTitle="輸入 sDefault="2"str1=InputBox(sPrompt,sTitle,Ifstr1ThenExitSubIfstr1="1"ThensTemp高級工程師ElseIfstr1"2ThensTemp="工程師"ElseIfstr1"3ThensTemp="助理工程師"ElseIfstr1"4ThensTemp="技術員"sTemp其他"EndIfEnd5-15多分支語句——Select在If...Then分支語句中,總是可以添加的ElseIf塊來構造多分支語句。但是,當SelectCase在結構的上方處理一個測試表達式并只計算一次。然后,VBA將表達式的CaseCase相關聯(lián)的語句塊,執(zhí)行完畢再跳轉到EndSelect語句后執(zhí)行。其語法格式如下:SelectSelectCaseEnd其中測試表達式可以是數(shù)值型或字符型的表達式,通常是一個數(shù)值型或字符型的變量。表達式列表可以是一個或幾個值的列表。如果在一個列表中有多個值,就用逗號將值0CaeCaseBACaelse子句()中的語句。其流程圖如圖516所示。5-16SelectCase表達式:這種方式用來表達一些具體的取值。例如,Case1,3,5AToB:這種方式用來表示一個數(shù)據(jù)范圍。例如,Case1To10Is比較運算符表達式。例如,CaseIs<60603種情況的混合。例如,Case0To60,80,Is>90注意:SelectCase結構每次都要在開始處計算表達式的值。If...Then...Else結構為每個ElseIfIfElseIf語句計算的表達式相同時,才能用SelectCase結構替換If...Then...Else結構。SubSubCase多分支程序Dimstr1AsString DimsPromptAsString DimsTitleAsString DimsDefaultAsString默認值DimsTempAsStringsPrompt="請輸入員工的 :"&vbNewLine&_"1:高級工程師"&vbNewLine&_"2:工程師"&vbNewLine&_"3:助理工程師&vbNewLine&_"4:技術員"&vbNewLine&_ sTitlesDefault=str1=InputBox(sPrompt,sTitle,Ifstr1ThenExitSub"SelectCasestr1Case"1"sTemp高級工程師CasesTemp工程師"Case"3"sTemp助理工程師CasesTemp技術員CasesTemp其他"EndSelectEnd在5.3.2節(jié)中的例子根據(jù)Excel工作表中尊稱列的值,自動在列填充相應的。SubSub循環(huán)填 WithWorksheets("員工")Fori=3To11If.Cells(i,5)= ".Cells(i17女".Cells(i17男EndEnd5-17For...NextForFor循環(huán)變量=To[Step步長值]語句序列1[語句序列2]Next循環(huán)變量For循環(huán)使用一個計數(shù)器變量,每執(zhí)行一次循環(huán),計數(shù)器變量的值就會按設置的步長值增加或者減少。在For循環(huán)中可以使用ExitFor語句隨時退出該循環(huán)。沒有關鍵字Step,則步長值默認為1。For…Next循環(huán)結構的流程圖如圖5-18所示。5-18ForNext Fori=3To SubSub隔行填 WithWorksheets("員工")Fori=3To11Step2If.Cells(i,5)= ".Cells(i17女".Cells(i17男EndEnd其循環(huán)次數(shù)為:[(11–3)/2]+1=5在工作表員工中刪除列中各數(shù)據(jù),執(zhí)行以上代碼后,將在工作表的奇數(shù)行中填入5-1953、5、7、9、115-19Do...LoopDo循環(huán)重復執(zhí)行一語句塊,且重復次數(shù)不定。Do...Loop4種演變形式,但DoDoWhile邏輯表達式語句序列1[ExitDo]DoWhileExitDo語句,當Loop5-20所示。5-20DoWhileLoop復執(zhí)行多次。如果邏輯表達式最初就為False,則不會執(zhí)行循環(huán)語句。后測試循環(huán)條件的DoLoop語句序列1[ExitDo]LoopWhile5-21DoLoopWhile先測試結束條件的DoLoopDoDoUntil邏輯表達式語句序列1[ExitDo]環(huán)體;否則退出循環(huán)。這種形式的循環(huán)體可能執(zhí)行0次或多次。后測試結束條件的DoLoop語句序列1[ExitDo]SubDoSubDo循環(huán)填寫 WithWorksheets("員工")i=3 DoWhilei<=11If.Cells(i,5)= ".Cells(i17女".Cells(i17男Endi=i+1 EndEnd循環(huán)變量的語句,Do循環(huán)將是一個死循環(huán),一直不能退出循環(huán)。ForEach...NextForEach...NextFor...Next循環(huán)類似,但它針對數(shù)組或對象集合中的每一個元素重復一組語句,而不是重復語句一定的次數(shù)。如果不知道一個集合有多少元素,F(xiàn)orEach...Next循環(huán)非常有用。ForEach...Next循環(huán)的語法如下:ForForEachIn對象集合語句序列1[2]Variant變量,或一般的對象(Object)變量,或Sub循環(huán)嵌套DimiAsIntegerFori=1To.Cells(i,1)=Int(Rnd*100)+1Fori=1ToForj=i+1ToIf.Cells(i,1)>.Cells(j,1)Thent=.Cells(i,1).Cells(i,1)=.Cells(j,.Cells(j,1)=tEndIfEnd

5-226前面各章中使用的數(shù)據(jù)都是基本數(shù)據(jù)類型,可以通過簡單的變量名來其保存的AVBA中,一個數(shù)組中的元素可以是不同類型的數(shù)據(jù),也可以是相同ExcelExcel2003VBA中,如果使用變量來保存單元格中的數(shù)據(jù)時,要保存一行的數(shù)據(jù),則需要定V1A1V2B1中的值,……在程序中,若需要分別這些變量中的值,則需要分別編寫代碼。例如,將Excel工作表中第1行各單元格的數(shù)據(jù)進行累加,可使用以下代碼:也可使用V(1)保存單元格A1的值,用V(2)保存單元格B1中的值,……ForFori=1To255s=s+6.1.1V,在括號中使用了一個索引,因此稱為“一維”。使用多個索引或下標的數(shù)組稱為“”。很多數(shù)組只有一維,例如,統(tǒng)計各的人數(shù)時,可定義一個數(shù)組,每個數(shù)組元素表示一個段的人數(shù)(如t(10)中保存著為10歲的人數(shù))。因此,這類數(shù)組只歲之間每個段的人數(shù)。 t(120)As6-1 Excel的工作表結構,由行和列構成。二維數(shù)組也DimaData(4,10)As 數(shù)組中的第33列的元素。6-2有些數(shù)組有三個維,如Excel工作簿就是一個三(每張工作表為一個二維數(shù)組DimaData(3,4,10)As 6-3一對或幾對圓括號,以指示該變量將數(shù)組而不是“標量”(包含單個值的變量)來。標量變量(非數(shù)組)與數(shù)組變量的不同在于必須為數(shù)組指定大小。若數(shù)組的Dim數(shù)組名(下界To上界)As數(shù)據(jù)類 VBA中定義數(shù)組時,下界的值可為任在數(shù)組時,也可只給出數(shù)組下標的上界(即可以使用的最大下標值)。而省略下標的下界,這時默認值為0,即數(shù)組的下標從0開始至定義的上界,如:DimaData(10)As DimaData(-10To10)As aData21aData(–10)、aData(–9)、下代碼在執(zhí)行時將會報錯,如圖6-4所示。6-4SubSub用變量定義數(shù)組()DimiAsIntegeri=10DimForj=1Toa(j)a(j)=jEndDimDim數(shù)組名([1To1維上界2To2維上界nTon維上界)AsDimDimaData(1To10,1ToDimDimaData(1To65536)AsDimDimaData(1To65536,1To100)AsDimDimaData(1To65536,1To100,1To100)As在默認情況下,在程序中數(shù)組時,如果不指定數(shù)組維數(shù)的下界,則VBA使用默認下界0。DimDimOptionOptionBase{0|OptionBase語句只影響位于包含該語句的模塊中的數(shù)組下界。例如,以下代碼查看各數(shù)組下標的下界為1。OptionOptionbase1DimLowerDimMyArray(20),TwoDArray(3,4)DimZeroArray(0To5)Lower=LBound(MyArray)Lower=LBound(TwoDArray,2)Lower=LBound(ZeroArray)'''''時,一般要進行批量賦值。數(shù)組初始化可有多種方法,本節(jié)介紹幾種常用的數(shù)組初始化方法。SubSub使用循環(huán)初始化數(shù)組Dima(1To10)AsIntegerFori=1To10a(i)=0NextiEndarglistVariant所包含的數(shù)組的各元素賦值。如果不提供參數(shù),則創(chuàng)建一個長度為0的數(shù)組。注意:沒有作為數(shù)組的Variant也可以表示數(shù)組。除了長度固定的字符串以及用戶定義類型之外,Variant變量可以表示任何類型的數(shù)組。盡管一個包含數(shù)組的VariantVariant類型的數(shù)組在概念上有所不同,但對數(shù)組元素的訪DimaAsVariant,bAsa=Array(1,3,5,7,b=Array("A","B","C",EndVBA中,還可以直接將一個數(shù)組的值賦值給另一個數(shù)組,以達到初始化數(shù)組的目Dima(5),b()Fori=0To5a(i)=ib=End在用戶窗體、模塊或過程中使用Dim或Public一個沒有下標的數(shù)組(不能ReDim語句的作用是重新數(shù)組的大小。它是在程序執(zhí)行到ReDim語句時才分配ReDim[Preserve]數(shù)組名(下標)[As數(shù)據(jù)類型 當程序編譯時,ReDim語句中的所有數(shù)組均被說明為動態(tài)數(shù)組。在程序運行中,ReDim語句時,就把新的上下界重新分配給數(shù)組,數(shù)組元素的值將被初始化,所有的數(shù)值元素的值被置為0,字符串元素被置為空字符串。ReDimDim語句一樣定義數(shù)組。在同一程序中,ReDim語句還可以多ReDimErase語句將原來的數(shù)組全部。若要保存數(shù)組中原有的值,需要使用Preserve關鍵字,這樣,當改變原有數(shù)組DimDimreDataAsIntegerSub動態(tài)數(shù)組()DimiAsInteger,jAsiVal(InputBox("請輸入數(shù)組的上界定義動態(tài)數(shù)組5))ReDimreData(i)Forj=1ToreData(jInputBox("請輸入數(shù)組的第&j&個元素的值")Forj=1ToiEnd使用變量i重定義該動態(tài)數(shù)據(jù)的大小(i的值由用戶輸入)。執(zhí)行以上代碼,將首先打開如圖6-5所示的框,讓用戶設置數(shù)組的上界。按用戶后在【立即窗口】列表框中輸出數(shù)組中每個元素的值,如圖6-6所示。圖6-5輸入數(shù)組的上 圖6-6輸出數(shù)組中的數(shù)定義,可以使用Erase語句來實現(xiàn)。Erase語句重新初始化大小固定的數(shù)組的元素,以及釋放動態(tài)數(shù)組的空間。其語Erase Erase根據(jù)是固定大小(常規(guī)的)數(shù)組還是動態(tài)數(shù)組,來采取完全不同的行為。EraseSubSub清除數(shù)組DimaData(10AsIntegerstr1AsStringstr1="原數(shù)組中的數(shù)據(jù):"&vbNewLineFori=0To10aData(i)=str1=str1&"aData("&i&")="&aData(i)&""EraseaDatastr1str1&vbNewLine&EraseaData:&vbNewLineFori=0To10str1=str1&"aData("&i&")="&aData(i)&""MsgBoxEnd運行以上程序,首先定義數(shù)組aData,為該數(shù)組賦初值,并輸出數(shù)組各元素的值。接6-7特殊的數(shù)據(jù)結構,因此,VBA提供了操作數(shù)組的函數(shù)。IsArray函數(shù)可檢查指定的變量是否為一個數(shù)組,如果指定變量是一個數(shù)組,返回值為True;否則返回False。該函數(shù)的語法格式如下: DimDimaData(5)AsInteger,aData1,bCheckaData1=Array(1,2,3)bCheck=bCheck= True返回1表示第一維,2表示第二維,依此類推。如果省略該參數(shù),表示返SubSub獲取數(shù)組下界范圍DimaData(-100To100,5To15,-3ToDimstr1Asstr1數(shù)組各維的下界為:&str1=str1&"1維:"&LBound(aData,1)&vbNewLinestr1=str1&"2維:"&LBound(aData,2)&vbNewLinestr1=str1&"3維:"&LBound(aData,3)&vbNewLinestr1str1&vbNewLine&數(shù)組各維的上界為:&vbNewLinestr1=str1&"1維:"&UBound(aData,1)&vbNewLinestr1=str1&"2維:"&UBound(aData,2)&vbNewLinestr1=str1&"3維:"&UBound(aData,3)&vbNewLineMsgBoxstr1End6-8本章前面的內容介紹了使用數(shù)組各方面的內容,本節(jié)以實例形式演示數(shù)組的使用戶輸入10個數(shù)據(jù),然后使用冒泡排序法對這10個數(shù)據(jù)進行排序。VBEOptionOptionBase1Sub數(shù)據(jù)排序DimiAsInteger,jAsIntegerDimkDims(10)AsIntegerFori=1To10Fori=1ToForj=i+1ToIfs(i)<s(j)Thent=s(i)s(i)=s(j)s(j)=tForEachkInsEnd10個數(shù)據(jù)。最后在【立即窗口】輸出排序的結果,如圖6-10所示。圖6-9【輸入數(shù)組】 圖6-10排序結OptionOptionBase1Sub幸運號碼DimnAsInteger,iAsInteger,jAsIntegerDiml()AsIntegerReDiml(n,7)AsIntegerFori=1TonForj=1To7l(i,j)=Int(10*Rnd)Fori=1TonForj=1To7Debug.PrintDebug.Printl(i,j);End圖6-11輸入數(shù) 圖6-12生成幸運號Excel中要處理大量數(shù)據(jù)時,可使用循環(huán)從各單元格中讀入數(shù)據(jù),經(jīng)過加工處理后Excel工作表中,工作表是一個二維結構,由行和列組成。這種特性與二維數(shù)組類myarrmyarr=Range(Cells(1,1),Cells(5,組myarr中的值賦值給單元格區(qū)域Rng。Rng.ValueRng.Value=OptionOptionBaseSub數(shù)組填充單元格區(qū)域DimiAsLong,jAsDimcolAsLong,rowAsLongDimarr()AsLongcolApplication.InputBox(prompt:="輸入列數(shù):Type:=2)ReDimarr(row,col)Fori=1ToForj=1Toarr(i,arr(i,j)=(i-1)*col+jSetRng=Sheets(1).Range(Cells(1,1),Cells(row,col))Rng.Value=arrEndExcel工作表中增加一個【填充數(shù)據(jù)】按鈕,單擊該按鈕,彈出如圖6-13所示的框,分別輸入數(shù)組的行和列。6-136-1429章WindowsWindowsAPIWindowsWindows應VBAWindowsAPIOfficeWindowsAPI代碼進入操作系統(tǒng)。要在Excel中調用API函數(shù),需要先了解API及其相關知識。WindowsAPIAPIApplicationProgrammingInterface,WindowsAPI也就是Windows對Windows操作系統(tǒng)有深入的了解。這樣,程序的開發(fā)效率將很低。Windows平臺上出現(xiàn)了很多優(yōu)秀的可視化編程環(huán)境,程優(yōu)秀的可視化編程環(huán)境操作簡單、界面友好(VB、VisualC++、DELPHI等),在這API的神秘功能,事實上這些類庫和WindowsAPIAPI函數(shù)的集合。它們把常用API函數(shù)組合在一起成為一個控件或類庫,并賦予其方便的使用方法,所以極大地提高Windows應用程序的開發(fā)效率。有了這些控件和類庫,程序員便可以把主要精力放在程用API函數(shù)來實現(xiàn)。APIWindowsWindowsAPI提供的函數(shù),通過這些函數(shù)可以保證所有在Windows中運行的應用程序都按照統(tǒng)一的方式運行。要的時候,至少應該知道它屬于哪一類的API函數(shù),這樣才能正確查找和使用。API函數(shù)向應用程序提供了一些創(chuàng)建和管理用戶界面的方法,窗體通用控制類:系統(tǒng)S 眾不同的外觀,通用控制是由通用控制庫COMCTL32.DLL提供的。 圖形設備接口(GDI32):國際特性類:有助于編寫的應用程序,提供Unicode字符集和多語種支持過查看API幫助掌握其使用方法即可。WindowsAPIVBAWindows操作系統(tǒng)的強大功能,VBAAPI的使用方法,使讀者掌握使用API的方法。VBA可以調用動態(tài)庫(DLL)中的函數(shù)。在大多數(shù)情況下,這些DLL文件是由CC++VBA中調用這些函數(shù)時,需要進行一些特殊設置,使其能與C的數(shù)據(jù)類型進行數(shù)據(jù)交換。本節(jié)介紹具體的設置方法。。Declare[Public|Private]DeclareSubnameLib"libname"[Alias"aliasname"][Public|Private]DeclareSubnameLib"libname"[Alias"aliasname"][([arglist])][Aslias:表示將被調用的過程在動態(tài)庫(DLL)中還有另外的名稱。當外部過程名與某個關鍵字重名時,就可以使用這個參數(shù)。當動態(tài)庫的過程與同一范圍內的公用變量、常數(shù)或任何其他過程的名稱相同時,也可以使用lias。如果該用a。則aliasname是動態(tài)庫中該過程的處的名稱。如果首字符是(#),則隨type:FunctionByte、Boolean、

溫馨提示

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

評論

0/150

提交評論