VBA宏编程操作指南
VBA宏编程操作指南
修订记录版本 V1.0 日期 2011-3-17 作者 jingpengtao 说明 VBA基础教程,不用自己写代码,不 用看懂代码也可以写出适合自己工作 的宏。
目录1.1 1.2 1.3 1.4 1.5 1.6 1.7 第一部分:关键代码解释 ......................................................................................... 3 第二部分:如何录制宏 ............................................................................................. 9 第三部分:实例解释如果编写宏 ........................................................................... 10 第四部分:如何确定在哪个位置插入关键代码呢? ........................................... 20 第五部分:如何调试宏 ........................................................................................... 20 第六部分:分块合成 VBA 代码............................................................................... 22 第七部分:个人心得 ............................................................................................... 25
1 / 25
VBA宏编程操作指南
序:EXCEL 在我们平时的生活工作中有着广泛和重要的应用,尤其是对于每天和大量数 据打交道的人员更重要,但同时对大量数据的操作又显得是那么的繁琐,一不小心就很 容易出错,对于每天都需要用 EXCEL 做同样事情的人来说,要是能够有一种工具来自动 做工作就好了。 EXCEL 宏就是一个解决此类问题的办法,编写好一个实用的 EXCEL 宏可以大幅度提 高工作效率和质量,因此掌握宏编程显得尤为重要。 但是并不是每个人都学过编程,都了解 VBA 语言,那么怎样才能快速学习和掌握 应用宏呢? 下面我就根据我个人的学习经验及理解来教大家如何学习 VBA 编程。 不需要理解代码的含义,不需要知道哪一步操作是什么代码,只要你会复制粘贴, 就能够写出 EXCEL 宏,提高你的工作效率。 俗话说: “授之以鱼,不如授之以渔” ,所以替人写宏不如教给他方法,也方便各自 修改。 学完本教程,写一些简单的宏肯定可以。编写本教程的目的就是为了方便经常和数 据打交道的同事朋友,能够各自根据需要编写自己的宏。
备注:由于本教程 V1、0 版本只是针对从未接触过 VBA 语言及刚入门的人员编写 的,并未涉及更详细的代码分析及条件语句,循环语句,数据语句等,将会在后期的 版本更新中不断完善。
由于编者水平经验有限,难免会有一些不足之处,还望多多包涵。
2 / 25
VBA宏编程操作指南
第一部分: 1.1 第一部分:关键代码解释1、 Dim str As String str = ThisWorkbook.Path & "\***.xls" Workbooks.Open str 代码解释:自动打开文件名为“***” ,属性为 xls 的文件。同时 xlsx,csv 文件也可打开。 实际应用: 如果你的宏执行需要很多文件, 那么就可以再一开始就先执行
打开每个文件, 如: Dim str As String str = ThisWorkbook.Path & "\日常数据模板.xls" Workbooks.Open str str = ThisWorkbook.Path & "\临时表.xls" Workbooks.Open str str = ThisWorkbook.Path & "\扰码分布表.xls" Workbooks.Open str
2、 Windows("***.xls").Activate Workbooks("***.xls").Close SaveChanges:=False 代码解释:关闭文件名为“***” ,属性为 xls 的文件等。 其中 SaveChanges:=False 意为不保存直接关闭该文件,如果 SaveChanges:=True,则表示 保存之后再关闭该文件。 实际应用:在执行完所有的代码之后关闭各个已打开的文件,对于需要保存数据的 SaveChanges:=True 即可,对于不需要保存数据的 SaveChanges:=False。 如: Windows("日常数据模板.xls").Activate Workbooks("日常数据模板.xls").Close SaveChanges:=False Windows("扰码分布表.xls").Activate Workbooks("扰码分布表.xls").Close SaveChanges:=True Windows("临时表.xls").Activate Workbooks("临时表.xls").Close SaveChanges:=False
3 / 25
VBA宏编程操作指南
3、 i = 1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select ActiveSheet.Paste 代码解释: 此段语句主要是对单元格进行判断, 是否为空白, 如果为空白, 则执行粘贴。 具体解释请看下图:
假如你要把 N 个不同 EXCEL 的内容粘贴到一个新的 EXCEL 里,也就是汇总所有的数据。 假如第一个 EXCEL 内容有 13 行,第二个 EXCEL 内容有 18 行,第三个 EXCEL 内容有 20 行,等等。 也许你会说直接定位到单元格不行吗? 当然,对于每天固定行数的 EXCEL,是可以的,但是如果每天的数据都在变,今天第一 个 EXCEL 有 17 行, 第二天又变为 10 行, 第二个 EXCEL 今天有 20 行, 第二天变为 25 行, 这样你就没法使用固定的单元格定位粘贴数据了。 因此就需要上面的代码。 语句类型为 While……Wend…… While (Cells(i, 1) <> "") Cells(i, 1)当 i=1,表示 A1 单元格,也就是当 A1 单元格不为空白 的时候,执行 i = i + 1,也就是接着判断 A2 是不是空白,依次类推…… 当执行到 Ai 为空白时(如上图则表示执行到 A14) ,执行 Cells(i, 1).Select ActiveSheet.Paste,也就是选中 A14 单元格,进行粘贴。这样通过判断空白的方法就不 会因为行数的变动而产生影响了。 注意:上面我们说的只是根据 Cells(i, 1)判断,同样,也可以根据 Cells(i, 2)第二列判断, Cells(i, 3)第三列判断等,这样就可以避免因为前面几列的空白列而导致后面列的判断出 现问题。
4 / 25
VBA宏编程操作指南
4、 i = 1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete 代码解释:此段语句主要是对单元格进行判断,是否为空白,如果为空白,则执行该单 元格以下所有数据的清除。具体解释请看下图:
此代码的和 3 部分的代码有相似之处,不同的
地方时当判断 Cells(i, 1)为空时,下一 步的执行不一样。 Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete 此语句执行之后如下:
也就是当 Cells(i, 1)为空时(本图表示 A13 为空时) ,从 A13 开始清除 A13 往右以及 5 / 25
VBA宏编程操作指南
往下所有的数据。 此语句主要用途:修正自动填充导致的数据超出计划。 Range("A2").Select Selection.AutoFill Destination:=Range("A2:A10")
假如你有 A1-A12 小区 CI 需要关联小区扰码,当你在 B2 单元格通过 VLOOKUP 关联 数据时,你肯定需要让 B2 自动填充到 B12。但是如果你每天都需要关联数据,而每次 数据都会变化,即今天要关联 A1-A12,明天是 A1-A20,这样就需要自动填充到 A20, 但是 EXCEL 不是智能的,你第一次设定的自动填充到 A12,当然不会变了,这样就有可 能导致数据不全。 为了解决这个问题,你可以让 EXCEL 自动填充到第 1000 行,然后把多余的删掉就 可以了(也就是把 20 行以后自动填充的数据自动删除) 。 如图所示:从 B21 开始出现#N/A,这些数据没用的,使用 …… 此处隐藏:4079字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




