配色: 字号:
整理或修改代码.txt
2020-04-27 | 阅:  转:  |  分享 
  
整理或修改代码

第三课时修改录制宏代码进行功能扩展

讲师:三戒

学员:denkey1

内容大纲:

一、什么是宏

二、通过实例演示录制一个宏执行(回放)的过程

三、介绍一个批量打印文档的宏

一、什么是宏

宏录制器好比就是个录像机,其具备录像机录制和播放的功能,当然录像机录制的是视频资料,而宏录制器录制的则是操作命令集,即宏。宏录制器会把我们绝大多数操作步骤以命令集的方式记录下来。

引申到Excel中,当打开宏的录制功能时,宏录制器会像录像机一样将Excel中的大多数操作进行录制,并且可对这些录制内容(即代码)进行回放和编辑。

通过录制宏,能完成一些简单重复操作的工作。同时在编写一些复杂的程序时,可以通过录制一些简单的宏,加工提炼出需要的代码,从而不仅提高编写代码的效率,而且可以节省代码调试的时间。

既然宏录制器会把我们绝大多数操作步骤录制下来,那么不管是正确还是错误的操作,宏录制器都会如是记录下来,而且在录制宏的时候,系统也会自动的附加一些不必要的代码。导致录制的宏执行效率不是很高,故有必要对宏代码进行一些简单的修改优化,达到简化操作、加快运行速度的目的。

从另一个角度看,宏代码有不可建立公式与函数、没有判断或循环的功能、不能进行人机交互、无法显示用户窗体、无法与其它软件或文件进行互动等局限性,所以必须通过对宏代码进行一些修改和编辑,让宏代码更好的服务和工作。

二、通过实例演示录制一个宏执行(回放)的过程

通过实例演示录制一个宏,并且对宏代码进行简单的修改来批量完成一些重复的操作。

实例:某公司2009年1—12月份的工资明细表分别存放在12张工作表中,要对表名及表头进行修改设置并适当添加内容,这个工作薄中的工作表除了表头的月份不同外,其余内容及格式都一样。通过录制宏进行工作表的修改,宏的录制方法在上一讲已经介绍,这里就不再作说明,具体操作步骤如下:

1、将表名由原来的12号字改为18号字、字的颜色改为蓝色;

2、将F2单元格添加金额单位为元;

3、将A3:F3单元格字体设为橙色。

(一)宏的录制

通过录制宏,得到如下代码:

将以上代码进行注释:

(二)代码的修改

1、添加ForEach…next循环语句

当录制好上述宏后,我们就可以通过切换工作表在其他工作表中进行回放,从而得到与开始录制时一样的格式内容。这样一张张切换工作表然后单击Macro1()宏的回放,它是一种相同的操作即重复性操作。为了简化操作,方法是将刚才录制的宏进行修改,在宏开头部分即SubMacro1()下面添加代码并做注释如下:

ForEach……Next语句将Sheet工作表变量在当前所有工作表中进行并列循环。

2、删除录制宏时产生的多余代码

With…..EndWith语句是录制宏时经常产生的一种语句,这段代码是录制宏时用于对字体进行设置,Selection代表突出显示A1:F1区域,.Name=”微软雅黑”是设置字体为微软雅黑,Name前面的小圆点,它的作用在于简化语句,代表Selection.Font的一部分。在录制宏时会产生附加(默认)代码,比如是否设置上标、下标、字体、下划线等等,实际上我们只设置了字体为18号,其他部分如微软雅黑字体等内容即使是删除了,也不影响代码的执行。也就是说只有.size=18是我们所做的修改。Selection.Font.Colorindex=5是A1:F1区域字体的颜色进行设置,Excel字体大小与字体颜色进行了分别设置,在录制宏时Excel在设置字体大小与是否有下划线、上下标归为一组,而将字体的颜色单独归为一组。可以将字体大小与颜色归类到一块,即把字体颜色代码剪到字体大小后面,去掉Colorindex=5前面的Selection.Font部分。通过添加循环、删除多余代码后,得到如下代码:

与原代码相比,大大简化。

(三)录制宏的局限性

1、录制的宏有时会产生错误,不得不进行修改;

2、录制的宏有多余的代码语句,如上标、下标、下划线、水平线等,需要进行删除,以便提高宏的运行速度;

3、增加宏的功能。录制的宏,它不会加入判断、循环语句。

(四)一些代码知识

1、Sub过程名()

Sub与EndSub是成对出现的,Sub过程称为子过程。

2、Dim声名变量

声名变量主要有变量声名、过程声名、函数声名等。其中,变量声名的一半格式为:

Dim变量名As类型(过程级别的变量)

Public变量名As类型(程序级别的变量)

Static变量名As类型(静态变量)

在Dim语句中,可以不必声名变量的数据类型,直接输入“Dim变量名”,此时定义的变量将被指定为Variant类型。

3、with语句

With语句是对某个指定的数据或对象进行一系列语句的操作,以提高代码执行的速度,避免重复输入对象名称。其语法格式如下:

With<对象名称>

<语句块>

EndWith

语句块内可用“.”来连接单元格的下一级对象或属性。每一个with语句块只能作用在一个对象上,不能同时作用在多个对象上。

4、ForEach语句

当过程需要在一个集合的所有对象或一个数组的所有元素之间循环时,应该使用ForEach…Next循环。

三、介绍一个批量打印文档的宏

三戒老师在最后介绍了一个在所有工作薄中进行批量打印工作表的宏,要修改打印就是.LookIn="d:\我的文档\桌面\已经实施"需要查找的路径。经演示回放,它将自动打开该工作薄打印最后自动关闭。

需要提醒的是,Excel2007不支持Filesearch对象,在Office2007中增加Filesearch对象的帖子链接:

http://club.excelhome.net/thread-276192-1-1.html

对代码的学习和注释如下:

献花(0)
+1
(本文系AiChemi首藏)