- Excel中宏的使用
- 录制宏的工具在哪里
- 录制并执行宏 使用按钮
- 录制宏时,若先点录制,再选单元格,会导致录制代码锁死该单元格(绝对引用);先选定单元格,再在点录制后点“使用相对引用”,再选单元格,录制的就是对与原单元格相对位置的单元格的操作,这就是相对引用:并不锁死某单元格,而是与原单元格的一定位置的偏移。
- 使用“DEMO-2-录制相对引用的宏”,可利用相对引用,将所有周一(或任意周几)的单元格涂色。
- 录制的宏在哪里?看vba环境,初步认识宏代码。理解sub过程的基本语法规则。将录制的宏复制出来,理解宏代码的作用。
- 但上述过程如果要重复做数十次,意味着点数十次宏,也很麻烦。理解for循环,以及定义数据类型。
- 宏工具制作工资条:文件“DEMO-2-录制相对引用的宏”的data表,需将表头插入每一条记录上方。
- 思考:将表头复制后,每隔2行粘贴,重复若干次,可否复制成宏后自动完成?
- 操作:选中表头-->录制宏-->使用相对引用-->插入复制的单元格-->停止录制,尝试运行宏。
- 进一步简化:使用for循环,考虑循环次数(记录条数-1)
- 优化:考虑若不小心未将鼠标放在表头上,执行了宏,将出现不符预期的结果。因此,应考虑让宏运行时,无论鼠标在哪里,都默认先选中表头行。录制选中表头行的宏。
思考:新录制的代码放在原代码的什么位置? - 进一步优化:添加按钮运行宏,观察效果。设置控件格式-->属性-->大小、位置均固定
- 补充:宏安全性要设置为启用。
- 练习题
尝试制作一个按钮,使得刚刚生成的工资条状态回复其原始状态。
- Range单元格对象
- 引入range单元格对象,可回避相对引用的问题。了解如何通过range表达式对某单元格赋值;
- 若想对a1-a100单元格全赋值为1怎么办?用for循环,但其中的变量 i 需注意range("a"&i)的写法,可用工作表界面&的作用类比;
- 进一步地,引入用表达式赋值;
- 以上一节给每周一涂色为例,用range+for循环回避相对引用的问题,理解for循环中的step设置;
- If 逻辑判断--过程控制
- 文件“DEMO-1-认识IF函数”,例1,在某一个单元格中,根据性别返回不同的称呼,理解在工作表界面写if···else函数和在vba中写if函数的异同;
- 将一列全用if转换,用for循环,进一步理解变量i在range中的使用;
- 在for循环中增加根据专业类填充专业代码的if语句,理解多种可能时使用elseif语句及对代码进行注释的方法;
- 将姓名为空的记录删除,用宏录制方式获得删除记录的代码,观察结果;
- 分析有些行没被删除的原因,思考如何解决?强调注意删除行时的陷阱;
- 解决方案较多,理解step -1的概念;
- 用If退出for循环
- 文件“DEMO-1-认识IF函数”,例2,改写上节的生成工资条宏,循环操作的每一步都选表头,并粘贴到奇数列(先选该列第一个单元格),录制一
次的宏再用for,计算循环多少次; - 计算次数很麻烦,怎么回避?考虑用if终止for循环(exit for),观察循环结束的条件(插入到空行)。注意思考if语句的位置。
- 同理做回复工资表的宏。(可作为练习)
- 文件“DEMO-2-(作业)新个税计算公式”,演示if (加and的条件)的写法,可不演示完。
需要理解并记住写法的概念:
(1)Sub ABC()……End Sub
(2)Dim i as integer
For i= 1 to 10……Next
需要理解的概念:
什么是宏?什么是VBA?录制宏时的相对引用是什么意思?什么是变量?
要点:选中第3行,观察删除时的表格变化情况,删除第3行,接着删第4行······共删除?次。进行录制