版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
,完全手冊(cè)ExcelVBA典型實(shí)例大全:通過368個(gè)例子掌握,,
,目錄
,,
,/2008-7-3115:35:00,,
,圖書導(dǎo)讀,,
,當(dāng)前章節(jié):目錄,,
,,,,
,·3.1常用輸入/輸出語句,,
,·3.2分支結(jié)構(gòu),,
,·3.3循環(huán)結(jié)構(gòu),,
,·3.4使用數(shù)組,,
,·12.1處理公式,,
,·12.2數(shù)據(jù)查詢,,
,目錄,,
,第1章
宏的應(yīng)用技巧,,
,
宏是一個(gè)VBA程序,通過宏可以完成枯燥的、頻繁的重復(fù)性工作。本章的實(shí)例分別介紹在Excel2003、Excel2007中錄制宏、使用VisualBasic代碼創(chuàng)建宏的方法,最后還以實(shí)例演示運(yùn)行宏和編輯宏的方法。,,
,1.1
創(chuàng)建宏
1,,
,例001
在Excel2003中錄制宏1,,
,例002
打開Excel2007的錄制宏功能
3,,
,例003
在Excel2007中錄制宏4,,
,例004
使用VisualBasic創(chuàng)建宏
5,,
,1.2
管理宏
6,,
,例005
運(yùn)行宏
7,,
,例006
編輯宏
8,,
,第2章
VBE使用技巧,,
,
VBE(VisualBasicEditor)是編寫VBA代碼的工具,在上一章中曾使用VBE編輯宏代碼。本章的實(shí)例介紹了設(shè)置VBE操作環(huán)境、在VBE中管理工程代碼、使用VBE的輔助工具提高代碼輸入效率等方法。,,
,2.1
設(shè)置VBE操作環(huán)境
10,,
,例007
??縑BE子窗口
10,,
,例008
定制VBE環(huán)境
12,,
,2.2
工程管理
13,,
,例009
增加模塊13,,
,例010
刪除模塊15,,
,例011
導(dǎo)出模塊16,,
,例012
導(dǎo)入模塊17,,
,2.3
管理代碼
18,,
,例013
屬性/方法列表
18,,
,例014
常數(shù)列表19,,
,例015
參數(shù)信息20,,
,例016
自動(dòng)完成關(guān)鍵字
21,,
,第3章
程序控制流程技巧,,
,
結(jié)構(gòu)化程序設(shè)計(jì)中使用的基本控制結(jié)構(gòu)有3種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。,,
,本章以實(shí)例演示了VBA中這三種控制結(jié)構(gòu)的控制語句,最后還介紹了在VBA中使用數(shù)組的方法。,,
,3.1
常用輸入/輸出語句
23,,
,例017
九九乘法表(Print方法的應(yīng)用)23,,
,例018
輸入個(gè)人信息(Inputbox函數(shù)的應(yīng)用)
24,,
,例019
退出確認(rèn)(Msgbox函數(shù)的應(yīng)用)
25,,
,3.2
分支結(jié)構(gòu)
27,,
,例020
突出顯示不及格學(xué)生
27,,
,例021
從身份證號(hào)碼中提取性別
29,,
,例022
評(píng)定成績等級(jí)30,,
,例023
計(jì)算個(gè)人所得稅
32,,
,3.3
循環(huán)結(jié)構(gòu)
34,,
,例024
密碼驗(yàn)證34,,
,例025
求最小公倍數(shù)和最大公約數(shù)36,,
,例026
輸出ASCII碼表
37,,
,例027
計(jì)算選中區(qū)域數(shù)值之和39,,
,例028
換零錢法(多重循環(huán))40,,
,3.4
使用數(shù)組
42,,
,例029
數(shù)據(jù)排序42,,
,例030
彩票幸運(yùn)號(hào)碼44,,
,例031
用數(shù)組填充單元格區(qū)域46,,
,第4章
Range對(duì)象操作技巧,,
,
用戶在使用Excel時(shí),大部分時(shí)間都是在操作單元格中的數(shù)據(jù),同樣地,在Excel中使用VBA編程時(shí),也需要頻繁地引用單元格區(qū)域。本章實(shí)例介紹用VBA引用單元格、獲取單元格信息、操作單元格數(shù)據(jù)、設(shè)置單元格格式等內(nèi)容。,,
,4.1
獲取單元格的引用
48,,
,例032
使用A1樣式引用單元格
48,,
,例033
使用索引號(hào)引用單元格49,,
,例034
引用多個(gè)單元格區(qū)域
50,,
,例035
合并單元格區(qū)域
51,,
,例036
引用合并區(qū)域的子區(qū)域52,,
,例037
動(dòng)態(tài)選中單元格區(qū)域
53,,
,例038
引用相對(duì)其他單元格的單元格
54,,
,例039
擴(kuò)展單元格區(qū)域
55,,
,例040
引用單元格交叉區(qū)域
56,,
,例041
引用當(dāng)前區(qū)域57,,
,例042
獲取已使用區(qū)域
58,,
,例043
引用區(qū)域內(nèi)的單元格
59,,
,例044
設(shè)置標(biāo)題行格式
61,,
,例045
選取條件格式單元格
62,,
,例046
選擇數(shù)據(jù)列末單元格
63,,
,例047
獲取某列連續(xù)數(shù)據(jù)區(qū)域64,,
,例048
獲取多個(gè)不同長度的非連續(xù)列
65,,
,例049
當(dāng)前單元格的前后單元格
65,,
,例050
獲取三維區(qū)域66,,
,4.2
獲取單元格信息
67,,
,例051
獲取標(biāo)題行和數(shù)據(jù)行
67,,
,例052
獲取當(dāng)前區(qū)域信息68,,
,例053
單元格區(qū)域是否有公式69,,
,例054
追蹤公式單元格
70,,
,例055
獲取單元格地址
71,,
,4.3
操作單元格
72,,
,例056
合并相同值單元格72,,
,例057
刪除指定字符后的內(nèi)容73,,
,例058
給單元格設(shè)置錯(cuò)誤值
75,,
,例059
活動(dòng)單元格錯(cuò)誤類型
76,,
,例060
自動(dòng)設(shè)置打印區(qū)域77,,
,例061
按設(shè)置長度換行
77,,
,例062
選擇不含公式的單元格79,,
,例063
生成不重復(fù)隨機(jī)數(shù)80,,
,例064
拆分單元格
82,,
,例065
添加超鏈接
83,,
,例066
刪除超鏈接
84,,
,例067
限制單元格移動(dòng)范圍
85,,
,例068
插入批注86,,
,例069
隱藏/顯示批注
87,,
,例070
刪除批注87,,
,例071
復(fù)制單元格區(qū)域
88,,
,例072
給單元格設(shè)置公式90,,
,例073
復(fù)制公式90,,
,例074
查找并填充空白單元格91,,
,例075
清除單元格
92,,
,例076
刪除單元格區(qū)域
93,,
,4.4
設(shè)置單元格格式
94,,
,例077
按顏色統(tǒng)計(jì)單元格數(shù)量94,,
,例078
獲取單元格底紋和圖案95,,
,例079
設(shè)置頁眉為單元格值
96,,
,例080
設(shè)置日期格式97,,
,例081
生成大寫金額98,,
,例082
格式化當(dāng)前區(qū)域的數(shù)據(jù)100,,
,例083
設(shè)置自動(dòng)套用格式101,,
,例084
突出顯示當(dāng)前位置101,,
,例085
設(shè)置邊框線
103,,
,例086
設(shè)置文本對(duì)齊格式104,,
,例087
單元格文本縮排
105,,
,例088
設(shè)置文本方向107,,
,例089
設(shè)置自動(dòng)換行格式108,,
,例090
設(shè)置縮小字體填充108,,
,例091
設(shè)置條件格式109,,
,例092
設(shè)置單元格圖案
111,,
,例093
合并單元格
112,,
,第5章
Worksheet對(duì)象操作技巧,,
,
Worksheet對(duì)象表示Excel工作簿中的工作表,Worksheet對(duì)象是Worksheets集合的成員。在VBA中,通過操作Worksheet對(duì)象和Worksheets集合對(duì)象,即可控制Excel的工作表。本章實(shí)例介紹了用VBA代碼操作工作表、操作工作表行和列、通過工作表事件控制工作表等內(nèi)容。,,
,5.1
控制工作表集合
114,,
,例094
增加工作表
114,,
,例095
窗體方式新增工作表
115,,
,例096
窗體方式刪除工作表
118,,
,例097
批量新建工作表
119,,
,例098
獲取工作表數(shù)120,,
,例099
循環(huán)激活工作表
121,,
,例100
選擇工作表
121,,
,例101
選取前一個(gè)工作表/后一個(gè)工作表
122,,
,例102
選中工作表的名稱123,,
,例103
保護(hù)工作表
124,,
,例104
撤銷工作表的保護(hù)126,,
,例105
判斷工作表是否存在
127,,
,例106
工作表排序
129,,
,例107
復(fù)制工作表
130,,
,例108
移動(dòng)工作表
131,,
,例109
刪除工作表
132,,
,例110
刪除空工作表133,,
,例111
密碼控制刪除工作表
134,,
,例112
隱藏/顯示工作表
135,,
,例113
工作表移至最前/最后
136,,
,例114
工作表打印頁數(shù)
137,,
,例115
重命名工作表138,,
,例116
設(shè)置工作表標(biāo)簽顏色
140,,
,例117
導(dǎo)出工作表
141,,
,5.2
操作工作表的行和列
144,,
,例118
刪除空行144,,
,例119
插入行
145,,
,例120
插入多行146,,
,例121
插入列
147,,
,例122
隱藏/顯示行
148,,
,例123
隱藏/顯示列
149,,
,例124
設(shè)置行高149,,
,例125
設(shè)置列寬151,,
,5.3
操作工作表
152,,
,例126
合并工作表數(shù)據(jù)
152,,
,例127
工作表是否被保護(hù)153,,
,例128
制作工作表目錄
154,,
,例129
刪除圖片155,,
,例130
修改工作表的代碼名
156,,
,5.4
控制工作表事件
158,,
,例131
為輸入數(shù)據(jù)的單元格添加批注
158,,
,例132
自動(dòng)填充相同值
159,,
,例133
記錄同一單元格多次輸入值160,,
,例134
禁止選中某個(gè)區(qū)域161,,
,例135
禁止輸入相同數(shù)據(jù)162,,
,例136
設(shè)置滾動(dòng)區(qū)域163,,
,例137
自動(dòng)添加邊框線
164,,
,例138
限制在數(shù)據(jù)區(qū)域下一行輸入數(shù)據(jù)165,,
,例139
增加快捷菜單166,,
,例140
限制選擇其他工作表
168,,
,例141
自動(dòng)隱藏工作表
169,,
,例142
將原數(shù)據(jù)作批注
170,,
,例143
輸入編碼171,,
,第6章
Workbook對(duì)象操作技巧,,
,
Workbook對(duì)象表示Excel工作簿,Workbooks集合對(duì)象表示Excel中所有打開的工作簿。本章實(shí)例介紹VBA控制工作簿的方法,包括對(duì)工作簿集合和工作簿的操作、通過工作簿事件控制工作簿的操作。,,
,6.1
操作工作簿集合
173,,
,例144
批量新建工作簿
173,,
,例145
設(shè)置背景音樂174,,
,例146
打開工作簿
176,,
,例147
保存工作簿
177,,
,例148
更名保存工作簿
178,,
,例149
將工作簿保存為Web頁
180,,
,例150
打開文本文件181,,
,例151
設(shè)置工作簿密碼
182,,
,例152
保護(hù)工作簿
184,,
,例153
查看文檔屬性185,,
,例154
處理命名單元格區(qū)域
187,,
,例155
判斷工作簿是否存在
190,,
,例156
判斷工作簿是否打開
191,,
,例157
備份工作簿
192,,
,例158
獲取關(guān)閉工作簿中的值(方法1)
194,,
,例159
獲取關(guān)閉工作簿中的值(方法2)
196,,
,例160
多工作簿數(shù)據(jù)合并197,,
,6.2
控制工作簿事件
199,,
,例161
自動(dòng)打開關(guān)聯(lián)工作簿
199,,
,例162
禁止拖動(dòng)單元格
200,,
,例163
設(shè)置新增工作表為固定名稱201,,
,例164
退出前強(qiáng)制保存工作簿202,,
,例165
限制打印203,,
,例166
限制保存工作簿
204,,
,例167
限制工作簿使用次數(shù)
205,,
,例168
限制工作簿使用時(shí)間
207,,
,例169
設(shè)置應(yīng)用程序標(biāo)題207,,
,例170
根據(jù)密碼打開工作簿
209,,
,例171
打開工作簿禁用宏210,,
,例172
用VBA刪除宏代碼
212,,
,第7章
Application對(duì)象操作技巧,,
,
Application對(duì)象代表整個(gè)Excel應(yīng)用程序,使用Application對(duì)象可控制應(yīng)用程序范圍的設(shè)置和選項(xiàng)。本章實(shí)例介紹使用VBA,通過Application對(duì)象自定義Excel外觀、設(shè)置Excel操作選項(xiàng)、控制Excel應(yīng)用程序,以及通過Application對(duì)象的OnTime方法和OnKey方法響應(yīng)用戶操作的內(nèi)容。,,
,7.1
自定義Excel外觀
214,,
,例173
顯示/關(guān)閉編輯欄
214,,
,例174
設(shè)置狀態(tài)欄
215,,
,例175
控制鼠標(biāo)指針形狀217,,
,例176
全屏幕顯示
218,,
,例177
最大化Excel窗口
219,,
,例178
查詢計(jì)算機(jī)信息
219,,
,7.2
設(shè)置Excel操作選項(xiàng)
220,,
,例179
關(guān)閉屏幕刷新220,,
,例180
禁止彈出警告信息222,,
,例181
復(fù)制/剪切模式
223,,
,例182
獲取系統(tǒng)路徑224,,
,7.3
控制應(yīng)用程序
225,,
,例183
激活Microsoft應(yīng)用程序
225,,
,例184
控制最近使用文檔226,,
,例185
文件選擇器
228,,
,例186
快速跳轉(zhuǎn)230,,
,例187
激活Excel2007的功能區(qū)選項(xiàng)卡232,,
,7.4
Application對(duì)象事件處理
234,,
,例188
工作表上顯示時(shí)鐘234,,
,例189
整點(diǎn)報(bào)時(shí)235,,
,例190
自定義功能鍵236,,
,第8章
Window對(duì)象操作技巧,,
,
Window對(duì)象代表一個(gè)窗口,許多工作表特征(如滾動(dòng)條和標(biāo)尺)實(shí)際上是窗口的屬性。本章實(shí)例介紹用VBA控制窗口的方法,包括通過Window對(duì)象的屬性和方法創(chuàng)建、拆分窗口、設(shè)置窗口大小、顯示比例、控制窗口顯示狀態(tài)等。,,
,8.1
控制窗口
238,,
,例191
創(chuàng)建窗口238,,
,例192
調(diào)整窗口大小239,,
,例193
獲取窗口狀態(tài)242,,
,例194
拆分窗格243,,
,例195
并排比較窗口244,,
,例196
排列窗口245,,
,例197
窗口顯示比例246,,
,8.2
控制工作表的顯示選項(xiàng)
248,,
,例198
工作簿顯示選項(xiàng)
248,,
,例199
工作表顯示選項(xiàng)
249,,
,例200
工作表網(wǎng)格線250,,
,例201
獲取指定窗口選中的信息
252,,
,第9章
Chart對(duì)象操作技巧,,
,
在Excel中可以快速簡便地創(chuàng)建圖表。在程序中,通過VBA代碼也可方便地創(chuàng)建圖表。本章實(shí)例介紹用VBA創(chuàng)建圖表(包括嵌入式圖表)、控制圖表中的對(duì)象、通過圖表事件響應(yīng)用戶操作等內(nèi)容。,,
,9.1
創(chuàng)建圖表
254,,
,例202
創(chuàng)建圖表工作表
254,,
,例203
創(chuàng)建嵌入圖表255,,
,例204
轉(zhuǎn)換圖表類型257,,
,例205
刪除圖表258,,
,9.2
控制圖表對(duì)象
260,,
,例206
獲取嵌入圖表的名稱
260,,
,例207
獲取圖表標(biāo)題信息260,,
,例208
獲取圖例信息262,,
,例209
獲取圖表坐標(biāo)軸信息
263,,
,例210
獲取圖表的系列信息
264,,
,例211
判斷工作表的類型265,,
,例212
重排嵌入圖表266,,
,例213
調(diào)整圖表的數(shù)據(jù)源268,,
,例214
為圖表添加陰影
269,,
,例215
顯示數(shù)據(jù)標(biāo)簽271,,
,例216
將圖表保存為圖片273,,
,例217
設(shè)置圖表顏色274,,
,例218
按值顯示顏色276,,
,例219
修改嵌入圖表外形尺寸277,,
,例220
修改圖表標(biāo)題279,,
,例221
修改坐標(biāo)軸
280,,
,例222
圖表插入到Word文檔
282,,
,9.3
圖表事件
283,,
,例223
激活圖表工作表
283,,
,例224
顯示圖表各子對(duì)象名稱284,,
,例225
捕獲嵌入圖表事件285,,
,第10章
用戶界面設(shè)計(jì)技巧,,
,
在Excel中,用戶大部分時(shí)間是在工作表中進(jìn)行操作。在Excel中,也可以設(shè)計(jì)用戶窗體,用戶直接在窗體上進(jìn)行操作,而將工作表作為保存數(shù)據(jù)的地方。本章實(shí)例介紹在VBA中調(diào)用Excel內(nèi)置對(duì)話框、在VBE中創(chuàng)建自定義窗體等內(nèi)容。,,
,10.1
使用內(nèi)置對(duì)話框288,,
,例226
顯示打開對(duì)話框(使用GetOpenFilename方法)
288,,
,例227
顯示保存文件對(duì)話框(使用GetSaveAsFilename方法)
290,,
,例228
顯示內(nèi)置對(duì)話框
291,,
,例229
用VBA調(diào)用Excel2007功能區(qū)功能
293,,
,10.2
創(chuàng)建自定義窗體294,,
,例230
制作Splash窗口
294,,
,例231
控制窗體顯示295,,
,例232
列表框間移動(dòng)數(shù)據(jù)297,,
,例233
通過窗體向工作表添加數(shù)據(jù)302,,
,例234
制作多頁窗體——報(bào)名登記305,,
,例235
通過窗體設(shè)置單元格格式
307,,
,例236
用窗體控制工作表顯示比例308,,
,例237
調(diào)色板窗體
311,,
,例238
在窗體中顯示圖表312,,
,例239
制作向?qū)Т绑w314,,
,例240
拖動(dòng)窗體上的控件317,,
,例241
制作交通信號(hào)燈
318,,
,例242
制作進(jìn)度條
320,,
,第11章
命令欄和功能區(qū)操作技巧,,
,
在Excel2007中,以新的功能區(qū)取代了以前版本的命令欄(包括菜單欄和工具欄)。本章實(shí)例分別介紹了用VBA控制Excel2003以前版本的命令欄、用XML自定義Excel2007功能區(qū)等內(nèi)容。,,
,11.1
控制命令欄322,,
,例243
顯示內(nèi)置菜單和工具欄的ID
322,,
,例244
創(chuàng)建自定義菜單
323,,
,例245
刪除自定義菜單
325,,
,例246
創(chuàng)建快捷菜單326,,
,例247
禁止工作表標(biāo)簽快捷菜單
328,,
,例248
屏蔽工作表標(biāo)簽部分快捷菜單
329,,
,11.2
Excel2007的功能區(qū)
330,,
,例249
創(chuàng)建功能區(qū)選項(xiàng)卡330,,
,例250
禁用Office按鈕的菜單332,,
,例251
在“Office按鈕”中新建菜單
333,,
,例252
重定義“Office按鈕”菜單項(xiàng)功能
335,,
,例253
為內(nèi)置選項(xiàng)卡增加功能336,,
,第12章
Excel處理工作表數(shù)據(jù)技巧,,
,
通過Excel相關(guān)對(duì)象可對(duì)工作表中的數(shù)據(jù)進(jìn)行操作,如處理單元格區(qū)域的公式、對(duì)數(shù)據(jù)進(jìn)行查詢、排序、篩選等操作。本章實(shí)例介紹了用VBA處理公式,對(duì)數(shù)據(jù)進(jìn)行查詢、排序、篩選等內(nèi)容。,,
,12.1
處理公式
339,,
,例254
判斷單元格是否包含公式
339,,
,例255
自動(dòng)填充公式340,,
,例256
鎖定和隱藏公式
341,,
,例257
將單元格公式轉(zhuǎn)換為數(shù)值
342,,
,例258
刪除所有公式343,,
,例259
用VBA表示數(shù)組公式
345,,
,12.2
數(shù)據(jù)查詢
346,,
,例260
查找指定的值346,,
,例261
帶格式查找
349,,
,例262
查找上一個(gè)/下一個(gè)數(shù)據(jù)
349,,
,例263
代碼轉(zhuǎn)換351,,
,例264
模糊查詢353,,
,例265
網(wǎng)上查詢快件信息354,,
,例266
查詢基金信息357,,
,例267
查詢手機(jī)所在地
358,,
,例268
使用字典查詢360,,
,12.3
數(shù)據(jù)排序
361,,
,例269
用VBA代碼排序
362,,
,例270
亂序排序363,,
,例271
自定義序列排序
364,,
,例272
多關(guān)鍵字排序366,,
,例273
輸入數(shù)據(jù)自動(dòng)排序367,,
,例274
數(shù)組排序369,,
,例275
使用Small和Large函數(shù)排序
370,,
,例276
使用RANK函數(shù)排序
372,,
,例277
姓名按筆畫排序
374,,
,12.4
數(shù)據(jù)篩選
376,,
,例278
用VBA進(jìn)行簡單篩選
377,,
,例279
用VBA進(jìn)行高級(jí)篩選
378,,
,例280
篩選非重復(fù)值380,,
,例281
取消篩選381,,
,第13章
Excel處理數(shù)據(jù)庫技巧,,
,
通過VBA代碼,可在Excel中訪問數(shù)據(jù)庫。本章實(shí)例介紹通過ADO訪問Excel工作簿中的數(shù)據(jù)、在Excel中處理Access數(shù)據(jù)庫(包括獲取、添加、修改、刪除記錄,創(chuàng)建Access數(shù)據(jù))等內(nèi)容。,,
,13.1
用ADO訪問Excel工作表
383,,
,例282
使用ADO連接數(shù)據(jù)庫
383,,
,例283
從工作表中查詢數(shù)據(jù)
384,,
,例284
使用ADO導(dǎo)出數(shù)據(jù)
386,,
,例285
匯總數(shù)據(jù)387,,
,例286
不打開工作簿獲取工作表名稱
388,,
,13.2
處理Access數(shù)據(jù)庫
390,,
,例287
從Access中獲取數(shù)據(jù)
390,,
,例288
添加數(shù)據(jù)到Access391,,
,例289
創(chuàng)建Access數(shù)據(jù)庫
393,,
,例290
是否存在指定表
395,,
,例291
列出數(shù)據(jù)庫的表名396,,
,例292
列出數(shù)據(jù)表的字段信息398,,
,例293
修改記錄399,,
,例294
刪除記錄401,,
,第14章
創(chuàng)建加載宏技巧,,
,
在Excel中,通過加載宏可以擴(kuò)展功能,加載宏是為Excel提供自定義命令或自定義功能的補(bǔ)充程序。本章實(shí)例介紹了在Excel中通過VBA代碼創(chuàng)建Excel加載宏和COM加載宏的方法。,,
,14.1
創(chuàng)建加載宏的方法
404,,
,例295
創(chuàng)建Excel加載宏
404,,
,例296
創(chuàng)建COM加載宏
408,,
,例297
系統(tǒng)加載宏列表
413,,
,14.2
常用加載宏示例414,,
,例298
時(shí)間提示414,,
,例299
大寫金額轉(zhuǎn)換416,,
,例300
計(jì)算個(gè)人所得稅
418,,
,例301
加蓋公章419,,
,第15章
文件和文件夾操作技巧,,
,
通過VBA代碼可在Excel中操作文件。有兩種方式訪問操作文件和文件夾:一,,
,是使用過程形式的VB訪問和操作方法,另一種是將文件系統(tǒng)作為對(duì)象的文件對(duì)象模型方式。本章實(shí)例介紹了用VB語句操作文件和文件夾、用FSO操作文件和文件夾的內(nèi)容。,,
,15.1
用VB語句操作文件和文件夾
422,,
,例302
顯示指定文件夾的文件422,,
,例303
判斷文件(文件夾)是否存在
424,,
,例304
新建文件夾
425,,
,例305
復(fù)制文件426,,
,例306
重命名文件或文件夾
427,,
,例307
刪除文件429,,
,例308
查看文件屬性430,,
,15.2
用FSO操作文件和文件夾
432,,
,例309
判斷文件是否存在(FSO)
432,,
,例310
分離文件名和擴(kuò)展名
434,,
,例311
新建和刪除文件夾(FSO)
435,,
,例312
復(fù)制文件(FSO)
437,,
,例313
復(fù)制文件夾(FSO)
439,,
,例314
列出文件夾名稱
440,,
,例315
顯示文件屬性441,,
,例316
刪除所有空文件夾442,,
,例317
顯示驅(qū)動(dòng)器信息
444,,
,第16章
文本文件操作技巧,,
,
上一章介紹了對(duì)文件進(jìn)行復(fù)制、刪除之類的操作,更多的時(shí)候用戶還需要從文本文件中讀取數(shù)據(jù),或向文本文件中寫入數(shù)據(jù)。本章實(shí)例介紹用VBA操作文本文件的內(nèi)容,包括用VB語句操作文本文件和用FSO操作文本文件。,,
,16.1
用VB語句操作文本文件
446,,
,例318
創(chuàng)建文本文件446,,
,例319
讀取文本文件數(shù)據(jù)448,,
,例320
工作表保存為文本文件450,,
,例321
導(dǎo)出批注到文本文件
451,,
,例322
從文本文件導(dǎo)入批注
453,,
,16.2
用FSO操作文本文件
455,,
,例323
創(chuàng)建文本文件(FSO)
455,,
,例324
添加數(shù)據(jù)到文本文件(FSO)
456,,
,例325
讀取文本文件數(shù)據(jù)(FSO)
458,,
,第17章
用Excel控制其他程序技巧,,
,
在Excel中,通過VBA代碼可調(diào)用其他應(yīng)用程序的功能。包括創(chuàng)建和打開Word文,,
,檔、創(chuàng)建和打開幻燈片、發(fā)送和導(dǎo)入Outlook郵件等。另外,使用VBA提供的Shell函數(shù)還可打開Windows中的其他程序、打開控制面板對(duì)應(yīng)的選項(xiàng)等。,,
,17.1
控制Office應(yīng)用程序460,,
,例326
打開Word文檔
460,,
,例327
從Word文檔中獲取數(shù)據(jù)
462,,
,例328
生成成績通知書
464,,
,例329
在Excel中打開PPT
469,,
,例330
在Excel中創(chuàng)建PPT
470,,
,例331
使用SendMail發(fā)送郵件473,,
,例332
用Outlook發(fā)送郵件
474,,
,例333
導(dǎo)入Outlook中的郵件
476,,
,例334
保存Outlook中的附件
478,,
,17.2
調(diào)用其他程序
479,,
,例335
運(yùn)行系統(tǒng)自帶程序479,,
,例336
在Excel中打開控制面板
481,,
,第18章
VBE工程實(shí)用操作技巧,,
,
在第2章中介紹了VBE的使用方法。其實(shí),VBE也包含一個(gè)對(duì)象模型,通過該對(duì)象模型可控制VBA工程的主要元素。本章實(shí)例介紹通過VBE對(duì)象模型,用VBA代碼添加或刪除模塊、創(chuàng)建用戶窗體、生成VBA代碼等內(nèi)容。,,
,18.1
顯示工程相關(guān)信息
483,,
,例337
顯示工程信息483,,
,例338
列出工程所有組件485,,
,例339
顯示工作簿中VBA的過程名
486,,
,例340
導(dǎo)出VBA過程代碼
488,,
,例341
列出工程引用的外部庫489,,
,18.2
動(dòng)態(tài)創(chuàng)建組件
490,,
,例342
重命名組件
490,,
,例343
導(dǎo)出/導(dǎo)入模塊代碼
492,,
,例344
刪除指定子過程代碼
494,,
,例345
查找代碼496,,
,例346
增加模塊498,,
,例347
增加類模塊
500,,
,例348
控制VBE的子窗口
501,,
,例349
工作表中動(dòng)態(tài)增加按鈕502,,
,例350
創(chuàng)建動(dòng)態(tài)用戶窗體504,,
,第19章
VBA程序調(diào)試優(yōu)化技巧,,
,
Excel應(yīng)用程序的順利完成,調(diào)試的過程是非常重要的。本章實(shí)例介紹ExcelVBA調(diào)試程序的基本方法和VBA程序的優(yōu)化技巧。,,
,19.1
VBA程序調(diào)試技巧
507,,
,例351
設(shè)置斷點(diǎn)507,,
,例352
使用本地窗口508,,
,例353
使用立即窗口510,,
,例354
單步執(zhí)行510,,
,例355
運(yùn)行選定部分代碼512,,
,例356
調(diào)用堆棧513,,
,例357
使用監(jiān)視窗口514,,
,例358
使用條件編譯515,,
,例359
錯(cuò)誤處理語句517,,
,19.2
VBA程序優(yōu)化技巧
518,,
,例360
使用VBA已有功能
518,,
,例361
避免使用變體520,,
,例362
使用對(duì)象變量521,,
,例363
使用數(shù)組處理單元格
522,,
,例364
檢查字符串是否為空
522,,
,例365
優(yōu)化循環(huán)體
523,,
,例366
使用ForEach循環(huán)525,,
,例367
關(guān)閉屏幕刷新526,,
,例368
使用內(nèi)置函數(shù)527,,
,完全手冊(cè)ExcelVBA典型實(shí)例大全:通過368個(gè)例子掌握,,
,3.1常用輸入/輸出語句
,,
,/2008-7-3115:35:00,,
,圖書導(dǎo)讀,,
,當(dāng)前章節(jié):3.1常用輸入/輸出語句,,
,,,,
,·目錄,,
,·3.2分支結(jié)構(gòu),,
,·3.3循環(huán)結(jié)構(gòu),,
,·3.4使用數(shù)組,,
,·12.1處理公式,,
,·12.2數(shù)據(jù)查詢,,
,VBA應(yīng)用程序由一系列的VBA代碼組成,這些代碼將按照一定的順序執(zhí)行。有時(shí)程序根據(jù)一定的條件只能執(zhí)行某一部分代碼,有時(shí)需要重復(fù)執(zhí)行某一段代碼。通過程序結(jié)構(gòu)控制代碼來完成這些功能,本章介紹這些程序控制流程方面的技巧。,,
,3.1
常用輸入/輸出語句,,
,結(jié)構(gòu)化程序設(shè)計(jì)中使用的基本控制結(jié)構(gòu)有3種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)就是按照語句的書寫順序從上到下、逐條語句地執(zhí)行。執(zhí)行時(shí),編寫在前面的代碼先執(zhí)行,編寫在后面的代碼后執(zhí)行。這是最普遍的結(jié)構(gòu)形式,也是后面兩種結(jié)構(gòu)的基礎(chǔ)。,,
,順序結(jié)構(gòu)不需要使用結(jié)構(gòu)控制語句,本節(jié)介紹常用的輸入輸出語句的技巧。,,
,例017
九九乘法表(Print方法的應(yīng)用),,
,1.案例說明,,
,在早期的Basic版本中,程序運(yùn)行結(jié)果主要依靠Print語句輸出到終端。在VB中,Print作為窗體的一個(gè)方法,用來在窗體中顯示信息。但是在VBA中,用戶窗體已經(jīng)不支持Print方法了。,,
,在VBA中,Print方法只能向“立即窗口”中輸出程序的運(yùn)行中間結(jié)果,供開發(fā)人員調(diào)試程序時(shí)使用。,,
,本例使用Print方法在立即窗口中輸入九九乘法表。,,
,2.關(guān)鍵技術(shù),,
,在VBA中,Print方法只能應(yīng)用于Debug對(duì)象,其語法格式如下:,,
,Debug.Print[outputlist],,
,參數(shù)outputlist是要打印的表達(dá)式或表達(dá)式的列表。如果省略,則打印一個(gè)空白行。,,
,—
Print首先計(jì)算表達(dá)式的值,然后輸出計(jì)算的結(jié)果。在outputlist參數(shù)中還可以使用分隔符,以格式化輸出的數(shù)據(jù)。格式化分隔符有以下幾種:,,
,—
Spc(n):插入n個(gè)空格到輸出數(shù)據(jù)之間;,,
,—
Tab(n):移動(dòng)光標(biāo)到適當(dāng)位置,n為移動(dòng)的列數(shù);,,
,—
分號(hào):表示前后兩個(gè)數(shù)據(jù)項(xiàng)連在一起輸出;,,
,—
逗號(hào):以14個(gè)字符為一個(gè)輸出區(qū),每個(gè)數(shù)據(jù)輸出到對(duì)應(yīng)的輸出區(qū)。,,
,3.編寫代碼,,
,(1)在VBE中,單擊菜單“插入/模塊”命令插入一個(gè)模塊。,,
,(2)在模塊中輸入以下代碼:,,
,Submulti(),,
,
Fori=1To9,,
,
Forj=1Toi,,
,"
Debug.Printi;""x"";j;""="";i*j;""
"";",,
,
Next,,
,
Debug.Print
'換行,,
,
Next,,
,EndSub,,
,(3)按功能鍵“F5”運(yùn)行子過程,在“立即窗口”輸出九九乘法表,如圖3-1所示。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-1
立即窗口,,
,例018
輸入個(gè)人信息(Inputbox函數(shù)的應(yīng)用),,
,1.案例說明,,
,本例演示Inputbox函數(shù)的使用方法。執(zhí)行程序,將彈出“輸入個(gè)人信息”對(duì)話框,要求用戶輸入“姓名、年齡、地址”信息,然后在“立即窗口”中將這些信息打印輸出。,,
,2.關(guān)鍵技術(shù),,
,為了實(shí)現(xiàn)數(shù)據(jù)輸入,VBA提供了InputBox函數(shù)。該函數(shù)將打開一個(gè)對(duì)話框作為輸入數(shù)據(jù)的界面,等待用戶輸入數(shù)據(jù),并返回所輸入的內(nèi)容。其語法格式如下:,,
,"InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])",,
,各參數(shù)的含義如下:,,
,—
Prompt:為對(duì)話框消息出現(xiàn)的字符串表達(dá)式。其最大長度為1024個(gè)字符。如果需要在對(duì)話框中顯示多行數(shù)據(jù),則可在各行之間用回車符換行符來分隔,一般使用VBA的常數(shù)vbCrLf代表回車換行符。,,
,—
Title:為對(duì)話框標(biāo)題欄中的字符串。如果省略該參數(shù),則把應(yīng)用程序名放入標(biāo)題欄中。,,
,—
Default:為顯示在文本框中的字符串。如果省略該參數(shù),則文本框?yàn)榭铡?,
,—
Xpos:應(yīng)和Ypos成對(duì)出現(xiàn),指定對(duì)話框的左邊與屏幕左邊的水平距離。如果省略該參數(shù),則對(duì)話框會(huì)在水平方向居中。,,
,—
Ypos:應(yīng)和Xpos成對(duì)出現(xiàn),指定對(duì)話框的上邊與屏幕上邊的距離。如果省略該參數(shù),則對(duì)話框被放置在屏幕垂直方向距下邊大約三分之一的位置。,,
,—
Helpfile:設(shè)置對(duì)話框的幫助文件,可省略。,,
,—
Context:設(shè)置對(duì)話框的幫助主題編號(hào),可省略。,,
,3.編寫代碼,,
,(1)在VBE中,單擊菜單“插入/模塊”命令插入一個(gè)模塊。,,
,(2)在模塊中輸入以下代碼:,,
,Subinputinfo(),,
,"
Title=""輸入個(gè)人信息""",,
,"
name1=""請(qǐng)輸入姓名:""",,
,"
age1=""請(qǐng)輸入年齡:""",,
,"
address1=""請(qǐng)輸入地址:""",,
,"
strName=InputBox(name1,Title)",,
,"
age=InputBox(age1,Title)",,
,"
Address=InputBox(addres1,Title)",,
,"
Debug.Print""姓名:"";strName",,
,"
Debug.Print""年齡:"";age",,
,"
Debug.Print""地址:"";Address",,
,EndSub,,
,(3)按功能鍵“F5”運(yùn)行子過程,將彈出“輸入個(gè)人信息”窗口,如圖3-2所示。在對(duì)話框中輸入內(nèi)容后按“回車”,或單擊“確定”按鈕。,,
,(4)接著輸入“年齡”和“地址”信息,在“立即窗口”中將輸出這些內(nèi)容,如圖3-3所示。,,
,
,,
,,,,
,,,,
,,,,
,,,,
,圖3-2
輸入個(gè)人信息
圖3-3
輸出結(jié)果,,
,例019
退出確認(rèn)(Msgbox函數(shù)的應(yīng)用),,
,1.案例說明,,
,在應(yīng)用程序中,有時(shí)用戶會(huì)由于誤操作關(guān)閉Excel,為了防止這種情況,可在退出Excel之前彈出對(duì)話框,讓用戶確認(rèn)是否真的要關(guān)閉Excel。,,
,本例使用Msgbox函數(shù)彈出對(duì)話框,讓用戶選擇是否退出系統(tǒng)。,,
,2.關(guān)鍵技術(shù),,
,使用MsgBox函數(shù)可打開一個(gè)對(duì)話框,在對(duì)話框中顯示一個(gè)提示信息,并讓用戶單擊對(duì)話框中的按鈕,使程序繼續(xù)執(zhí)行。,,
,MsgBox函數(shù)語法格式如下:,,
,"Value=MsgBox(prompt[,buttons][,title][,helpfile,context])",,
,通過函數(shù)返回值可獲得用戶單擊的按鈕,并可根據(jù)按鈕的不同而選擇不同的程序段來執(zhí)行。,,
,該函數(shù)共有5個(gè)參數(shù),除第1個(gè)參數(shù)外,其余參數(shù)都可省略。各參數(shù)的意義與Inputbox函數(shù)參數(shù)的意義基本相同,不同的地方是多了一個(gè)buttons參數(shù),用來指定顯示按鈕的數(shù)目及形式、使用提示圖標(biāo)樣式、默認(rèn)按鈕以及消息框的強(qiáng)制響應(yīng)等。其常數(shù)值如表3-1所示。,,
,表3-1
按鈕常數(shù)值,,
,常
量,值,說
明
,vbOkOnly,0,只顯示“確定”(Ok)按鈕
,vbOkCancel,1,顯示“確定”(Ok)及“取消”(Cancel)按鈕
,vbAbortRetryIgnore,2,顯示“異常終止”(Abort)、“重試”(Retry)及“忽略”(Ignore)按鈕
,vbYesNoCancel,3,顯示“是”(Yes)、“否”(No)及“取消”(Cancel)按鈕
,續(xù)表
,,
,常
量,值,說
明
,vbYesNo,4,顯示“是”(Yes)及“否”(No)按鈕
,vbRetryCancel,5,顯示“重試”(Retry)及“取消”(Cancel)按鈕
,vbCritical,16,顯示CriticalMessage圖標(biāo)
,,,,
,vbQuestion,32,顯示W(wǎng)arningQuery圖標(biāo)
,,,,
,vbExclamation,48,顯示W(wǎng)arningMessage圖標(biāo)
,,,,
,vbInformation,64,顯示InformationMessage圖標(biāo)
,,,,
,vbDefaultButton1,0,以第一個(gè)按鈕為默認(rèn)按鈕
,vbDefaultButton2,256,以第二個(gè)按鈕為默認(rèn)按鈕
,vbDefaultButton3,512,以第三個(gè)按鈕為默認(rèn)按鈕
,vbDefaultButton4,768,以第四個(gè)按鈕為默認(rèn)按鈕
,vbApplicationModal,0,進(jìn)入該消息框,當(dāng)前應(yīng)用程序暫停
,vbSystemModal,4096,進(jìn)入該消息框,所有應(yīng)用程序暫停
,表3-1中的數(shù)值(或常數(shù))可分為四組,其作用分別為:,,
,—
第一組值(0~5)用來決定對(duì)話框中按鈕的類型與數(shù)量。,,
,—
第二組值(16,32,48,64)用來決定對(duì)話框中顯示的圖標(biāo)。,,
,—
第三組值(0,256,512)設(shè)置對(duì)話框的默認(rèn)活動(dòng)按鈕。活動(dòng)按鈕中文字的周轉(zhuǎn)有虛線,按回車鍵可執(zhí)行該按鈕的單擊事件代碼。,,
,—
第四組值(0,4096)決定消息框的強(qiáng)制響應(yīng)性。,,
,buttons參數(shù)可由上面4組數(shù)值組成,其組成原則是:從每一類中選擇一個(gè)值,把這幾個(gè)值累加在一起就是buttons參數(shù)的值(大部分時(shí)間里都只使用前三組數(shù)值的組合),不同的組合可得到不同的結(jié)果。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,3.編寫代碼,,
,(1)在VBE中,雙擊“工程”子窗口中的“ThisWorkbook”打開代碼窗口,如圖3-4所示。,,
,(2)在代碼窗口左上方的對(duì)象列表中選擇“Workbook”,如圖3-5所示。,,
,(3)在代碼窗口右上方的事件列表中選擇“BeforeClose”,如圖3-6所示。代碼窗口中將自動(dòng)生成事件過程結(jié)構(gòu)如下:,,
,
,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-5
對(duì)象列表
圖3-6
事件列表,,
,PrivateSubWorkbook_BeforeClose(CancelAsBoolean),,
,EndSub,,
,(4)在上面生成的事件過程中輸入以下代碼:,,
,PrivateSubWorkbook_BeforeClose(CancelAsBoolean),,
,
DimintReturnAsInteger,,
,"
intReturn=MsgBox(""真的退出系統(tǒng)嗎?"",vbYesNo+vbQuestion,""提示"")",,
,
IfintReturn<>vbYesThenCancel=True,,
,EndSub,,
,(5)保存Excel工作簿。,,
,,,,
,,,,
,,,,
,(6)關(guān)閉Excel工作簿時(shí),將彈出如圖3-7所示的對(duì)話框。單擊“是”按鈕將退出Excel,單擊“否”按鈕將返回Excel工作簿。,,
,完全手冊(cè)ExcelVBA典型實(shí)例大全:通過368個(gè)例子掌握,,
,3.2分支結(jié)構(gòu)
,,
,/2008-7-3115:35:00,,
,圖書導(dǎo)讀,,
,當(dāng)前章節(jié):3.2分支結(jié)構(gòu),,
,,,,
,·目錄,,
,·3.1常用輸入/輸出語句,,
,·3.3循環(huán)結(jié)構(gòu),,
,·3.4使用數(shù)組,,
,·12.1處理公式,,
,·12.2數(shù)據(jù)查詢,,
,3.2
分支結(jié)構(gòu),,
,分支結(jié)構(gòu),又叫選擇結(jié)構(gòu)。這種結(jié)構(gòu)的程序?qū)⒏鶕?jù)給定的條件來決定執(zhí)行哪一部分代碼,而跳過其他代碼。,,
,例020
突出顯示不及格學(xué)生,,
,1.案例說明,,
,本例判斷學(xué)生成績表中的成績,如果成績不及格(低于60分),則將該成績著重顯示出來。如圖3-8所示(左圖為原成績,右圖突出顯示不及格成績)。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-8
突出顯示不及格學(xué)生,,
,2.關(guān)鍵技術(shù),,
,在本例中,需要進(jìn)行一個(gè)判斷(成績是否低于60分),這時(shí)可使用If…Then語句。用If…Then語句可有條件地執(zhí)行一個(gè)或多個(gè)語句。其語法格式如下:,,
,If邏輯表達(dá)式Then,,
,
語句1,,
,
語句1,,
,
……,,
,
語句n,,
,EndIf,,
,邏輯表達(dá)式也可以是任何計(jì)算數(shù)值的表達(dá)式,VBA將為零(0)的數(shù)值看做False,而任何非零數(shù)值都被看做True。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,該語句的功能為:若邏輯表達(dá)式的值是True,則執(zhí)行位于Then與EndIf之間的語句;若邏輯表達(dá)式的值是False,則不執(zhí)行Then與EndIf之間的語句,而執(zhí)行EndIf后面的語句。其流程圖如圖3-9所示。,,
,If…Then結(jié)構(gòu)還有一種更簡單的形式:單行結(jié)構(gòu)條件語句。其語法格式如下:,,
,If邏輯表達(dá)式Then語句,,
,該語句的功能為:若邏輯表達(dá)式的值是True,則執(zhí)行Then后的語句;若邏輯表達(dá)式的值是False,則不執(zhí)行Then后的語句,而執(zhí)行下一條語句。,,
,3.編寫代碼,,
,(1)打開“學(xué)生成績表”。,,
,(2)按快捷鍵“Alt+F11”進(jìn)入VBE環(huán)境。,,
,(3)單擊菜單“插入/模塊”命令向工程中插入一個(gè)模塊,并編寫以下代碼:,,
,Sub顯示不及格學(xué)生(),,
,
DimiAsInteger,,
,
Fori=3To11,,
,"
IfSheets(1).Cells(i,2).Value<60Then",,
,"
Sheets(1).Cells(i,2).Select",,
,"
Selection.Font.FontStyle=""加粗""",,
,
Selection.Font.ColorIndex=3,,
,
EndIf,,
,
Next,,
,EndSub,,
,(4)關(guān)閉VBE開發(fā)環(huán)境返回Excel。,,
,(5)在功能區(qū)“開發(fā)工具”選項(xiàng)卡的“控件”組中,單擊“插入”按鈕彈出“表單控件”面板,如圖3-10所示。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-10
插入按鈕,,
,(6)在“表單控件”面板中單擊“按鈕”,拖動(dòng)鼠標(biāo)在工作表中繪制一個(gè)按鈕。當(dāng)松開鼠標(biāo)時(shí),將彈出“指定宏”對(duì)話框,如圖3-11所示。,,
,(7)在“指定宏”對(duì)話框中,單擊選中“顯示不及格學(xué)生”宏,單擊“確定”按鈕。,,
,(8)右擊工作表中的按鈕,彈出快捷菜單如圖3-12所示,單擊“編輯文字”菜單,修改按鈕中的提示文字為“顯示不及格學(xué)生”。,,
,
,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-11
指定宏
圖3-12
編輯文字,,
,(9)單擊“顯示不及格學(xué)生”按鈕,執(zhí)行宏代碼,成績表中不及格成績將突出顯示為粗體、紅色,如圖3-13所示。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-13
執(zhí)行程序,,
,例021
從身份證號(hào)碼中提取性別,,
,1.案例說明,,
,在很多信息系統(tǒng)中都需要使用到身份證號(hào)碼,身份證號(hào)碼中包含有很多信息,如可從其中提取性別。我國現(xiàn)行使用的身份證號(hào)碼有兩種編碼規(guī)則,即15位居民身份證和18位居民身份證。,,
,15位的身份證號(hào)的編碼規(guī)則。,,
,ddddddyymmddxxp,,
,18位的身份證號(hào)的編碼規(guī)則。,,
,ddddddyyyymmddxxpy,,
,其中:,,
,—
dddddd為地址碼(省地縣三級(jí))18位中的和15位中的不完全相同。,,
,—
yyyymmddyymmdd為出生年月日。,,
,—
xx序號(hào)類編碼。,,
,—
p性別。,,
,—
18位中末尾的y為校驗(yàn)碼。,,
,2.關(guān)鍵技術(shù),,
,在If…Then語句中,條件不成立時(shí)不執(zhí)行任何語句。在很多時(shí)候需要根據(jù)條件是否成立分別執(zhí)行兩段不同的代碼,這時(shí)可用If…Then…Else語句,其語法格式如下:,,
,If邏輯表達(dá)式Then,,
,
語句序列1,,
,Else,,
,
語句序列2,,
,EndIf,,
,VBA判斷“邏輯表達(dá)式”的值,如果它為True,將執(zhí)行“語句序列1”中的各條語句,當(dāng)“邏輯表達(dá)式”的值為False時(shí),就執(zhí)行“語句序列2”中的各條語句。其流程圖如圖3-14所示。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,3.編寫代碼,,
,(1)新建Excel工作簿,在VBE中插入一個(gè)模塊。,,
,(2)在模塊中編寫以下代碼:,,
,Sub根據(jù)身份證號(hào)碼確定性別(),,
,"
sid=InputBox(""請(qǐng)輸入身份證號(hào)碼:"")",,
,
i=Len(sid),,
,
Ifi<>15Andi<>18Then
'判斷身份證號(hào)長度是否正確,,
,"
MsgBox""身份證號(hào)碼只能為15位或18位!""",,
,
ExitSub,,
,
EndIf,,
,
Ifi=15Then
'長度為15位,,
,"
s=Right(sid,1)
'取最右側(cè)的數(shù)字",,
,
Else
'長度為18度,,
,"
s=Mid(sid,17,1)
'取倒數(shù)第2位數(shù)",,
,
EndIf,,
,
IfInt(s/2)=s/2Then
'為偶數(shù),,
,"
sex=""女""",,
,
Else,,
,"
sex=""男""",,
,
EndIf,,
,"
MsgBox""性別:""+sex",,
,EndSub,,
,(3)切換到Excel環(huán)境,添加一個(gè)按鈕“從身份證號(hào)碼提取性別”,并指定執(zhí)行上步創(chuàng)建的宏。,,
,(4)單擊“從身份證號(hào)碼提取性別”按鈕,彈出如圖3-15所示對(duì)話框。,,
,(5)輸入身份證號(hào)碼后單擊“確定”按鈕,將在如圖3-16所示對(duì)話框中顯示性別。,,
,
,,
,,,,
,,,,
,,,,
,圖3-15
輸入身份證號(hào)碼
圖3-16
顯示性別,,
,例022
評(píng)定成績等級(jí),,
,1.案例說明,,
,本例將成績表中的百分制成績按一定規(guī)則劃分為A、B、C、D、E五個(gè)等級(jí),如圖3-17所示。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-17
評(píng)定成績等級(jí),,
,其中各等級(jí)對(duì)應(yīng)的成績分別為:,,
,—
A:大于等于90分;,,
,—
B:大于等于80分,小于90分;,,
,—
C:大于等于70分,小于80分;,,
,—
D:大于等于60分,小于70分;,,
,—
E:小于60分。,,
,2.關(guān)鍵技術(shù),,
,本例共有五個(gè)分支,使用If…Then…Else這種二路分支結(jié)構(gòu)也可完成,但需要復(fù)雜的嵌套結(jié)構(gòu)才能解決該問題。其實(shí)VBA中提供了一種If…Then…ElseIf的多分支結(jié)構(gòu),其語法格式如下:,,
,If邏輯表達(dá)式1Then,,
,
語句序列1,,
,ElseIf邏輯表達(dá)式2Then,,
,
語句序列2.,,
,ElseIf邏輯表達(dá)式3Then,,
,
語句序列3,,
,
...…,,
,Else,,
,
語句序列n,,
,EndIf,,
,在以上結(jié)構(gòu)中,可以包括任意數(shù)量的ElseIf子句和條件,ElseIf子句總是出現(xiàn)在Else子句之前。,,
,VBA首先判斷“邏輯表達(dá)式1”的值。如果它為False,再判斷“邏輯表達(dá)式2”的值,依此類推,當(dāng)找到一個(gè)為True的條件,就會(huì)執(zhí)行相應(yīng)的語句塊,然后執(zhí)行EndIf后面的代碼。如果所有“邏輯表達(dá)式”都為False,且包含Else語句塊,則執(zhí)行Else語句塊。其流程圖如圖3-18所示。,,
,圖3-18
If…Then…ElseIf語句流程圖,,
,3.編寫代碼,,
,(1)在Excel中打開成績表。,,
,(2)按快捷鍵“Alt+F11”進(jìn)入VBE開發(fā)環(huán)境。,,
,(3)單擊“插入/模塊”命令向工程中插入一個(gè)模塊,并編寫以下VBA代碼:,,
,Sub評(píng)定等級(jí)(),,
,
DimiAsInteger,,
,
Fori=3To11,,
,"
t=Sheets(1).Cells(i,2).Value
'取得成績",,
,
Ift>=90Then,,
,"
j=""A""",,
,
ElseIft>=80Then,,
,"
j=""B""",,
,
ElseIft>=70Then,,
,"
j=""C""",,
,
ElseIft>=60Then,,
,"
j=""D""",,
,
Else,,
,"
j=""E""",,
,
EndIf,,
,"
Sheets(1).Cells(i,3)=j",,
,
Next,,
,EndSub,,
,(4)返回Excel操作界面,在成績表旁邊增加一個(gè)按鈕,并指定執(zhí)行宏“評(píng)定等級(jí)”。,,
,(5)單擊“評(píng)定等級(jí)”按鈕,即可在成績表的C列顯示出各成績對(duì)應(yīng)的等級(jí),如圖3-17所示。,,
,例023
計(jì)算個(gè)人所得稅,,
,1.案例說明,,
,在工資管理系統(tǒng)中,需要計(jì)算員工應(yīng)繳納的個(gè)人所得稅。個(gè)人所得稅稅額按5%至45%的九級(jí)超額累進(jìn)稅率計(jì)算應(yīng)繳稅額,稅率表如圖3-19所示。,,
,個(gè)人所得稅的計(jì)算公式為:,,
,應(yīng)納個(gè)人所得稅稅額=應(yīng)納稅所得額×適用稅率-速算扣除數(shù),,
,本例根據(jù)工資表中的相應(yīng)數(shù)據(jù)計(jì)算出納稅額,并填充在工資表對(duì)應(yīng)的列中。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-19
個(gè)人所得稅稅率表,,
,2.關(guān)鍵技術(shù),,
,本例中計(jì)算個(gè)人所得稅時(shí)共有九個(gè)分支。這時(shí)可在If…Then…ElseIf結(jié)構(gòu)中添加多個(gè)ElseIf塊來進(jìn)行各分支的處理。對(duì)于多分支結(jié)構(gòu),可使用SelectCase語句。SelectCase語句的功能與If…Then…Else語句類似,但在多分支結(jié)構(gòu)中,使用SelectCase語句可使代碼簡潔易讀。,,
,SelectCase結(jié)構(gòu)的語法格式如下:,,
,SelectCase測(cè)試表達(dá)式,,
,Case表達(dá)式列表1,,
,
語句序列1,,
,Case表達(dá)式列表2,,
,
語句序列2,,
,
…
…,,
,CaseElse,,
,
語句序列n,,
,EndSelect,,
,在以上結(jié)構(gòu)中,首先計(jì)算出“測(cè)試表達(dá)式”的值,然后,VBA將表達(dá)式的值與結(jié)構(gòu)中的每個(gè)Case的值進(jìn)行比較。如果相等,就執(zhí)行與該Case語句下面的語句塊,執(zhí)行完畢再跳轉(zhuǎn)到EndSelect語句后執(zhí)行。其流程圖如圖3-20所示。,,
,圖3-20
SelectCase語句流程圖,,
,在SelectCase結(jié)構(gòu)中,“測(cè)試表達(dá)式”通常是一個(gè)數(shù)值型或字符型的變量。“表達(dá)式列表”可以是一個(gè)或幾個(gè)值的列表。如果在一個(gè)列表中有多個(gè)值,需要用逗號(hào)將各值分隔開。表達(dá)式列表可以按以下幾種情況進(jìn)行書寫:,,
,"—
表達(dá)式:表示一些具體的取值。例如:Case10,15,25。",,
,—
表達(dá)式ATo表達(dá)式B:表示一個(gè)數(shù)據(jù)范圍。例如,Case7To17表示7~17之間的值。,,
,—
Is比較運(yùn)算符表達(dá)式:表示一個(gè)范圍。例如,CaseIs>60表示所有大于90的值。,,
,"—
以上三種情況的混合。例如,Case4To10,15,Is>20。",,
,3.編寫代碼,,
,(1)在Excel中打開工資表工作簿。,,
,(2)按快捷鍵“Alt+F11”進(jìn)入VBE開發(fā)環(huán)境。,,
,(3)單擊菜單“插入/模塊”命令插入一個(gè)模塊。,,
,(4)在模塊中編寫以下函數(shù),用來計(jì)算所得稅:,,
,Function個(gè)人所得稅(curPAsCurrency),,
,
DimcurTAsCurrency,,
,
curP=curP–1600
'1600為扣除數(shù),,
,
IfcurP>0Then,,
,
SelectCasecurP,,
,
CaseIs<=500,,
,
curT=curP*0.05,,
,
CaseIs<=2000,,
,
curT=(curP-500)*0.1+25,,
,
CaseIs<=5000,,
,
curT=(curP-2000)*0.15+125,,
,
CaseIs<=20000,,
,
curT=(curP-5000)*0.2+375,,
,
CaseIs<=40000,,
,
curT=(curP-20000)*0.25+1375,,
,
CaseIs<60000,,
,
curT=(curP-40000)*0.3+3375,,
,
CaseIs<80000,,
,
curT=(curP-60000)*0.35+6375,,
,
CaseIs<100000,,
,
curT=(curP-80000)*0.4+10375,,
,
CaseElse,,
,
curT=(curP-100000)*0.45+15375,,
,
EndSelect,,
,
個(gè)人所得稅=curT,,
,
Else,,
,
個(gè)人所得稅=0,,
,
EndIf,,
,EndFunction,,
,(5)在模塊中編寫“計(jì)算”子過程,計(jì)算工資表中每個(gè)員工應(yīng)繳所得稅額,并填寫在對(duì)應(yīng)的列中。,,
,Sub計(jì)算(),,
,
Fori=4To9,,
,"
Sheets(1).Cells(i,8).Value=個(gè)人所得稅(Sheets(1).Cells(i,6).Value)",,
,
Next,,
,EndSub,,
,(6)返回到Excel環(huán)境中,在工資表下方插入一個(gè)按鈕,為按鈕指定宏為“計(jì)算”。,,
,(7)單擊“計(jì)算”按鈕,可計(jì)算出每個(gè)員工的所得稅額,如圖3-21所示。,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,,,,
,圖3-21
計(jì)算所得稅,,
,完全手冊(cè)ExcelVBA典型實(shí)例大全:通過368個(gè)例子掌握,,
,3.3循環(huán)結(jié)構(gòu)
,,
,/2008-7-3115:35:00,,
,圖書導(dǎo)讀,,
,當(dāng)前章節(jié):3.3循環(huán)結(jié)構(gòu),,
,,,,
,·目錄,,
,·3.1常用輸入/輸出語句,,
,·3.2分支結(jié)構(gòu),,
,·3.4使用數(shù)組,,
,·12.1處理公式,,
,·12.2數(shù)據(jù)查詢,,
,3.3
循環(huán)結(jié)構(gòu),,
,在實(shí)際開發(fā)的應(yīng)用系統(tǒng)中,經(jīng)常需要重復(fù)執(zhí)行一條或多條語句。這種結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)的思想是利用計(jì)算機(jī)高速處理運(yùn)算的特性,重復(fù)執(zhí)行某一部分代碼,以完成大量有規(guī)則的重復(fù)性運(yùn)算。,,
,VBA提供了多個(gè)循環(huán)結(jié)構(gòu)控制語句:Do…Loop結(jié)構(gòu)、While…Wend結(jié)構(gòu)、For…Next結(jié)構(gòu)、ForEach…Next結(jié)構(gòu)。,,
,例024
密碼驗(yàn)證,,
,1.案例說明,,
,在信息管理系統(tǒng)中,很多時(shí)候都需要用戶進(jìn)行登錄操作。在登錄操作時(shí)要求用戶輸入密碼,一般都要給用戶三次機(jī)會(huì),每次的輸入過程和判斷過程都相同。,,
,本例使用Do…Loop循環(huán)完成密碼驗(yàn)證過程。,,
,2.關(guān)鍵技術(shù),,
,在VBA中,最常用的循環(huán)語句是Do…Loop循環(huán)。循環(huán)結(jié)構(gòu)DoWhile…Loop的語法格式如下:,,
,DoWhile邏輯表達(dá)式,,
,
語句序列1,,
,
[ExitDo],,
,
[語句序列2],,
,Loop,,
,其中DoWhile和Loop為關(guān)鍵字,在DoWhile和Loop之間的語句稱為循環(huán)體。,,
,當(dāng)VBA執(zhí)行這個(gè)Do循環(huán)時(shí),首先判斷“邏輯表達(dá)式”的值,如果為False(或零),則跳過所有語句,執(zhí)行Loop的下一條語句,如果為True(或非零),則執(zhí)行循環(huán)體,當(dāng)執(zhí)行到Loop語句后,又跳回到DoWhile語句再次判斷條件。在循環(huán)體中如果包含有ExitDo語句,當(dāng)執(zhí)行到ExitDo語句,馬上跳出循環(huán),執(zhí)行Loop的下一條語句。其流程圖如圖3-22所示。,,
,圖3-22
DoWhile…Loop流程圖,,
,VBA的Do…Loop循環(huán)有4種結(jié)構(gòu),分別如下:,,
,—
DoWhile…Loop循環(huán):先測(cè)試條件,如果條件成立則執(zhí)行循環(huán)體。,,
,—
Do…LoopWhile循環(huán):先執(zhí)行一遍循環(huán)體,再測(cè)試循環(huán)條件,如果條件成立則執(zhí)行循環(huán)體。,,
,—
DoUntil…Loop循環(huán):先測(cè)試條件,如果條件不成立則執(zhí)行循環(huán)體。,,
,—
Do…LoopUntil循環(huán):先執(zhí)行一遍循環(huán)體,再測(cè)試循環(huán)條件,如果條件不成立則執(zhí)行循環(huán)體。,,
,3.編寫代碼,,
,(1)新建Excel工作簿,按快捷鍵“Alt+F11”進(jìn)入VBE開發(fā)環(huán)境。,,
,(2)單擊菜單“插入/模塊”命令向工程中插入一個(gè)模塊。,,
,(3)在模塊中編寫以下VBA代碼:,,
,Sublogin(),,
,
DimstrPasswordAsString
'保存密碼,,
,
DimiAsInteger
'輸入密碼的次數(shù),,
,
Do,,
,"
strPassword=InputBox(""請(qǐng)輸入密碼"")'輸入密碼",,
,"
IfstrPassword=""test""Then
'判斷密碼是否正確",,
,
ExitDo
'退出循環(huán),,
,
Else,,
,"
MsgBox(""請(qǐng)輸入正確的密碼!"")",,
,
EndIf,,
,
i=i+1,,
,
LoopWhilei<3,,
,
Ifi>=3Then
'超過正常輸入密碼次數(shù),,
,"
MsgBox""非法用戶,系統(tǒng)將退出!""",,
,
Application.Quit,,
,
Else,,
,"
MsgBox""歡迎你使用本系統(tǒng)!""",,
,
EndIf,,
,EndSub,,
,(4)返回Excel操作界面,在工作表中插入一個(gè)按鈕,設(shè)置提示文字為“密碼驗(yàn)證”,并為該按鈕指定執(zhí)行的宏為“l(fā)ogin”。,,
,,,,
,,,,
,,,,
,,,,
,(5)單擊“密碼驗(yàn)證”按鈕,彈出如圖3-23所示對(duì)話框,輸入密碼后單擊“確定”按鈕進(jìn)行密碼的驗(yàn)證。,,
,例025
求最小公倍數(shù)和最大公約數(shù),,
,1.案例說明,,
,幾個(gè)數(shù)公有的倍數(shù)叫做這幾個(gè)數(shù)的公倍數(shù),其中最小的一個(gè)叫做這幾個(gè)數(shù)的最小公倍數(shù)。如12、18、20這三個(gè)數(shù)的最小公倍數(shù)為180。,,
,最大公約數(shù)是指某幾個(gè)整數(shù)的共有公約數(shù)中最大的那個(gè)數(shù)。如2、4、6這三個(gè)數(shù)的最大公約數(shù)為2。,,
,本例使用輾轉(zhuǎn)相除法求兩個(gè)自然數(shù)m、n的最大公約數(shù)和最小公倍數(shù)。,,
,2.關(guān)鍵技術(shù),,
,本例首先求出兩數(shù)m、n的最大公約數(shù),再將m、n數(shù)的乘積除以最大公約數(shù),即可得到最小公倍數(shù)。求最大
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋立面改造施工合同范例
- 窗簾質(zhì)保合同范例
- 推拿培訓(xùn)協(xié)議合同范例
- 環(huán)??萍柬?xiàng)目聯(lián)合研發(fā)協(xié)議
- 離婚后同居協(xié)議書范本2025年
- 服務(wù)器托管合同2025年
- 災(zāi)難救護(hù)課程設(shè)計(jì)
- 無人機(jī)調(diào)色課程設(shè)計(jì)論文
- 裝修合同增項(xiàng)2025年
- 智能電網(wǎng)技術(shù)研發(fā)合作合同
- 信息安全意識(shí)培訓(xùn)課件
- Python試題庫(附參考答案)
- MOOC 理解馬克思-南京大學(xué) 中國大學(xué)慕課答案
- 涂色畫簡筆畫已排可直接打印涂色
- 空調(diào)維修派工單(共1頁)
- 運(yùn)動(dòng)場監(jiān)理大綱
- 特種設(shè)備日常運(yùn)行記錄表(共4頁)
- 部編本語文八年級(jí)上全冊(cè)文言文課下注釋
- 十二種健康教育印刷資料
- RTO處理工藝PFD計(jì)算
- 凱旋帝景地產(chǎn)杯籃球爭霸賽方案
評(píng)論
0/150
提交評(píng)論