本书重点强调实践性,旨在帮助 Excel初学者和有一定 Excel vba编程基础、希望进一步提高的读者掌握VBA编程设计的技巧。全书精选150个典型范例,近245个技巧,以实用为主,知识点针对性强,并逐层对代码辅以深入浅出地剖析,让读者通过范例的学习,快速将EκceIⅤBA编程应用到实际生活和工作中。本书主要介绍VBA常用对象的应用技巧、控件及用户窗体的应用技巧、对话框的应用技巧、函数的应用技巧,使用VBA操作文件等技巧,最后介绍了制作员工花名册、收据打印系统、员工考勤系统三个综合实例。本书内容丰富、图文并茂,适合初步掌握ⅤBA的基本知识,但需要进一步提高编程能力的初学者,以及希望通过VBA提高工作效率的各类从业人员。也适合各大、中专院校相关专业师生和企业、相关单位的培训班学员阅读。图书在版编目(c|P)数据ExcelⅥBA常用代码实战大全/袁竹平编著.北京:化学工业出版社,2010.7ISBN9787-122-08647-1ISBN978-7-8972290-4(光盘)I.E…Ⅲ.袁…Ⅲ电子表格系统, ExcelⅣV,TP391,13中国版本图书馆CIP数据核字(2010)第093341号责任编辑:王思慧张敏装帧设计;王晓宇责任校对:周梦华出版发行:化学工业出版社(北京市东城区青年湖南街13号邮政编码100011)印装:化学工业出版社印刷厂787mmx1092mm1/16印张24/4字数583千字2010年7月北京第1版第1次印刷购书咨询:010-64518888(传真:010-64519686)售后服务:010-64518899址:ht!www.clp.com.cn凡购买本书,如有缺损质量问题,本社销售中心负责调换。定价:59.80元(含1CD-RDM)版权所有违者必究Excel2007是Oce家族成员中功能强大、技术先进、使用方便的数据管理和分析系统。它采用电子表格方式进行数据处理,工作直观方便为了使 Excel2007发挥最大功效,可以使用ⅤBA开发电子表格应用程序。使用VBA可以为 Excel应用程序提供新的功能或增强现有的功能,从而减少在 Excel中进行操作所需的工作量。VBA语言简单易学,但功能非常强大。用户可以将 Excel作为开发平台,建立各种应用程序。例如实现使重复的任务自动化,简化模板的使用,使其成为开发平台,创建报表以及对数据进行复杂的操作和分析等。通过将VBA与 Excel结合起来,不仅可以提高工作效率,也使得对各种数据的处理得心应手。本书特色实例丰富,强调实践为了让读者易于理解概念,掌握编程设计的技巧,本书列举∫大量范例。范例的选择力求做到与知识点密切结合并突出应用技巧;范例的设计以读者易于理解为目标,同时突出实用性,能够解决在实际操作中遇到的问趣。通过这些范例,读者便可更加深入地理解相关概念和语法,从而达到灵活使用VBA编写应用程序的目的另外,本书重点强调实践性,书中的很多范例都来源于编者实际开发的程序,通过对这些范例的学习,可以增强读者的动手实践能力。2.优化代码,解析详细基于 Excel的VBA程序设计,代码并不复杂、算法并不高深,实用并简便易行才是真正需要的。本书摒弃了VBA复杂理论的讲解,在选择知识讲解的重点和范例的设置上以需要为先,以实用为主,知识点针对性强,代码短小精炼。这极大地优化了本书的内容结构,增强了本书的含金量。本书所涉及的程序源代码层次清楚,语句简洁,便于读者理解,代码解析内容丰富。3.循序渐进,难度适中本书面向 Excel VBA的初级用户,以让读者快速掌握 Excel vBA程序设计为目标。本书在结构上采用由浅入深的方式,站在初学者的立场,以解决初学者可能遇到的问题和急需掌握的知识为主线,来完成本书的编写。本书采取循序渐进的讲解方式,层层推进,步步深入,学习难度遹中,学习梯度设置科学,让读者非常容易掌握4.超值光盘,辅助学习为了帮助读者更直观地学习,本书所附光盘中提供了书中所有范例的VBA代码文件,目录第1章 Range(单元帕)对象范例1单元格的引用方法,1111-1使用 Range属性引用单元格区域1-2使用Cls属性引用单元格区域…11-3使用快捷记号实现快速输入世世虚世虚1世世出世哲甘世世世2231-4使用Oset属性返回单元格区域1-5使用 Resize属性返回调整后的单元格区域…范例2选定单元格区域的方法2-1使用 Select方法选定单元格区域2-2使用 Activate方法选定单元格区域.2-3使用Goto方法选定单元格区域…范例3获得指定行的最后一个非空单元格范例4使用 Specialcells方法定位单元格…444566899范例5查找特定内容的单元格5-1使用Find方法查找特定信息…111115-2使用Lke运算符进行模式匹配查找.11111112范例6替换单元格内字符串,…范例7复制单元格147-1复制单元格区城7-2仅复制数值到另一区域17范例8禁用单元格拖放功能∴18范例9设置单元格格式199-1设置单元格字体格式中9-2设置单元格内部格式…209-3为单元格区域添加边框…terete ---21范例10单元格的数据有效性…12410-1添加数据有效性…11111112410-2判断是否存在数据有效性,+;++;“a和;“,:“26103动态的数据有效性……范例11单元格中的公式味…于2811-1在单元格中写入公式…28112判断单元格是否包含公式…1113011-3判断单元格公式是否存在错误………3111-4取得公式的引用单元格.…32第1章 Range(单元格)对累范例1单元格的引用方法在VBA中经常需要引用单元格区域,主要有以下几种方法1-1使用 Range属性引用单元格区域使用 Range属性以Al样式引用单元格区域,范例代码如下:#001 Sub MyRng (排002Range("Al: B4, D5: E8").Select003Range("Al), Formula s-Rand (#004Range("Al: B4 B2: C6). Value= 10#005Range("A1", B4 ).Font. Italic= True#006 End Sub【代码解析】 MyOng过程使用 Range属性以AF样式引用单元格区域应用于 Range对象的 Range属性代表一个单元格或单元格区域,语法如下表达式, Range(ce111,ce112)参数Cel是必需的,必须为采用宏语言的A1样式引用,可包括区域操作符(冒号)、相交区域操作符(空格)或合并区域操作符(逗号),也可包括货币符号(即绝对地址,如“$A$1”,但会被忽略掉),还可以使用局部定义名称,如 Range(" MyRna"),其电 MyRng为已定义的单元格区域名称。参数Ce2是可选的,为区域左上角和右下角的单元格。可以是一个包含单个单元格、整行或整列的 Range对象,或是一个局部定义名称第2行代码使用 Select方法选定工作表的下第3行代码在工作表的A1单元格中写入公式A1:B4、D5:E8单元格区域第4行代码将工作表中A1B4单元格与B2C单元格的相交区域B2:B4单元格赋值为10第5行代码将工作表中A1D4单元格的字体样9式设置为斜体10:跟果,设?于,【运行结果】运行 MyRna过程,结果如图11图11使用 Range属性弓用单元格区域所Exce|VBA常用f码实战大全注意:在没有使用对象识别符的情况下, Range属性返回活动表的一个区域,如果活动表不是工作表,则该属性无效『知识扩展』在实际应用中,引用合并区域可以使用 Union方法。引用相交区域可以使用 Interswct方法。1-2使用Ces属性引用单元格区域cell属性返回一个 Range对象,代表指定单元格区域中的所有单元格。 Cells属性有个tem属性,可以通过tem属性的行、列编号来引用单元格,范例代码如下:#001 Sub MyCell()#002Dim i As Byte03For 1-1To 10井004Sheets("Sheet1").Cells(if 1). Value=i#005Next#006 End Sub【代码解析】MyCl过程在工作表的A1A10单元格区域依次输入序号。第3行代码使用For.Next语句重复执行第4行代码10次。For.Next语句是最常见的循环结构,在For和Next之间的语句将运行指定的次数。第4行代码使用Cell属性的ltem属性,通过行、列编号来引用A1-A10单元格,其中行编号为变量,它的值为For.Next语句中计数器的值Cells属性的Item属性的语法如下Cells. Item(Row, Column)因为Item属性是 Range对象的默认属性,所以可以在cell关键字后面紧接着指定行和列编号,如Ccll(1,1)引用A1单元格。在需要引用不确定的单元格区域时, Cells属性的参BALACD数可以使用变量,它比使用 Range属性更加方便。23卿注意:在没有使用对象识别符的情况下,Cels56789属性将返回一个 Range对象,代表活动工作表中所有的7单元格【运行结果】运行 MyCell过程,结果如图1-2所示r知识扩展:用户可以将Cels属性作为 Range属-2使用 Cells属性引用单元格区域性的参数使用,下面的代码将引用A1:B10单元格区域:Range(ce11(1,1),ce11(10,2)1-3使用快捷记号实现快速输入在VBA中可以使用方括号作为 Range属性的快捷方式,这样就不必输入单词“ Range2·第1章 Range(单兀)对象和使用引号,范例代码如下#001 Sub FastMark(002A1]="Exce12007"#003 End Sub【代码解析】 FastMark过程使用快捷记号为A1单元格赋值第2行代码使用快捷记号在工作表的A1单元格中输入字符串“ Excel200”。【运行结果】运行 FastMark过程,结果如图1-3所示。心注意小:使用快捷记号引用单元格区城时,只能使这A用固定字符串而不能使用变量。I:Excel 2007知识扩展:使用快捷记号同样可以利用 Range属性的各种表示方法,如表示交又范围的[A1:B4BC6]、合5并区域的[A1:B4,B2C6]等,也可以使用局部定义名称,下面的代码将工作簿中已命名为“Rng”的单元格区域赋值图13使用快捷记号为单元格赋值为4Sheets("Sheet1").[Rng]=414使用 Offset属性返回单元格区域在VBA中,除了以上三种直接引用单元格的方法外,还可以使用 Offset属性来引用某个指定区域以外的单元格区域,范例代码如下:#001 Sub Rngoffset ()002Sheets("Sheet1"). Range("Al: B2").Offset (2, 2). Select#003 End sub【代码解析】 RngOffset过程使用 Range对象的Oset属性,选中Al:B2单元格,偏移两行两列的单元格区域应用于 Range对象的 Offset属性代表位于指定单元格区域的一定偏移量位置上的单元格区域,语法如下:表达式. ofFset( RowOffset, Columnoffset)参数 RowOffset是可选的,表示区域偏移的行数,正值表示向下偏移,负值表示向上偏移默认值为0。参数 Columnoffset是可选的,表示区域偏移的列数,正值表示向右偏移,负值表示向左偏移,默认值为0。【运行结果】运行 Rngoffset过程,选中图1.4使用Oet属性返回单元格区域A1:B2单元格,偏移两行两列的单元格区域,如图1-4所示Excel VBA常用代們实战大全15使用 Resize属性返回调整后的单元格区域用户还可以使用 Resize属性调整指定单元格区域的大小并返回调整后的单元格区域,范例代码如下#001 Sub RngResize (002Sheets(Sheet1), Range("Al"), Resize(4, 4).Select#003 End sub【代码解析】 Rngresize过程使用 Resize属性选中A1单元格扩展为四行四列后的单元格区域。应用于 Range对象的 Resize属性调整指定区域的大小并返回调整后的区域,语法如下:表达式, Resize( RowSize, Columnsize)参数 RowSize是可选的,为新区域中的行数,如果省略,则该区域中的行数保持不变。参数ColumnSize是可选的,表示新区域中的列数,如果省略,则该区域中的列数保持不变。【运行结果】运行 RngResize过程,选中A1单图1.5使用 Resize性调整单元格区域元格并扩展为四行四列后的区域,如1-5所示范例2选定单元格区域的方法21使用sect方法选定单元格区域在VBA中一般使用 Select方法选定单元格区域,范例代码如下:#001 Sub Rng Select()002Sheets(Sheet2), Activate003Sheets("Sheet2 )Range(Al: B10").Select#004 End Sub【代码解析】 RngSelect过程使用 Select方法选定 Sheet2工作表的A1:B10单元格区域第2行代码利用 Activate方法使 Sheet2工作表成为活动工作表,使用 Select方法选定单元格时,单元格 kicroanft Yinai Bar所在的工作表必须为活动工作表,否则 Select方法将发画行啊'ior类an的5elet光无赞生运行错误,如图1-6所示第3行代码使用 Select方法选定 Sheet2工作表的A1:B10单元格区域结束)变帮肋c【运行结果】运行 RngSelect过程,结果如图1-7所示。图1-6 Select方法无效提示4第1章 Range(单格)对象江用5c方站识读 Microsoft入局式数开发绳料鱼,图1-7使用 Select方法选定单元格区域22使用 Activate方法选定单元格区域用户还可以使用 Activate方法选定单元格区域,范例代码如下:#001 Sub RngActivate ()#002Sheets ("Sheet2"). Activate003Sheets("Sheet2"). Range("Al: B10 ).Activate#004 End sub【代码解析】 RngActivate过程使用 Activate方法选定Sh工作表的A1:B10单元格区域。第2行代码利用 Activate方法使 Sheet2工作表成为活动工作表。使用 Activate方法选定单元格时,单元格所在的工作表必须为活动工作表,否则 Activate方法将发生运行错误,如图1-8所示。第3行代码使用 Activate方法选定Shet2工作表的Al:B10单元格区域【运行结果】运行 RngActivate过程,结果如图1-9所示。9)2用A法m, Microsoft ExcesMicrosoft isual Basic运行时储误:004类B4ng的 heti vit方法无效(魅束g)」[式帮助图1-8 Activate方法无效提示图1-9使用 Activate方法选定单元格区域