• Excel中宏的使用
  1. 录制宏的工具在哪里
  2. 录制并执行宏 使用按钮
  3. 录制宏时,若先点录制,再选单元格,会导致录制代码锁死该单元格(绝对引用);先选定单元格,再在点录制后点“使用相对引用”,再选单元格,录制的就是对与原单元格相对位置的单元格的操作,这就是相对引用:并不锁死某单元格,而是与原单元格的一定位置的偏移。
  4. 使用“DEMO-2-录制相对引用的宏”,可利用相对引用,将所有周一(或任意周几)的单元格涂色。
  5. 录制的宏在哪里?看vba环境,初步认识宏代码。理解sub过程的基本语法规则。将录制的宏复制出来,理解宏代码的作用。
  6. 但上述过程如果要重复做数十次,意味着点数十次宏,也很麻烦。理解for循环,以及定义数据类型。
  7. 宏工具制作工资条:文件“DEMO-2-录制相对引用的宏”的data表,需将表头插入每一条记录上方。
  8. 思考:将表头复制后,每隔2行粘贴,重复若干次,可否复制成宏后自动完成?
  9. 操作:选中表头-->录制宏-->使用相对引用-->插入复制的单元格-->停止录制,尝试运行宏。
  10. 进一步简化:使用for循环,考虑循环次数(记录条数-1)
  11. 优化:考虑若不小心未将鼠标放在表头上,执行了宏,将出现不符预期的结果。因此,应考虑让宏运行时,无论鼠标在哪里,都默认先选中表头行。录制选中表头行的宏。
         思考:新录制的代码放在原代码的什么位置?
  12. 进一步优化:添加按钮运行宏,观察效果。设置控件格式-->属性-->大小、位置均固定
  13. 补充:宏安全性要设置为启用。
  • 练习题

  尝试制作一个按钮,使得刚刚生成的工资条状态回复其原始状态。

  • Range单元格对象

 

  1.  引入range单元格对象,可回避相对引用的问题。了解如何通过range表达式对某单元格赋值;
  2. 若想对a1-a100单元格全赋值为1怎么办?用for循环,但其中的变量 i 需注意range("a"&i)的写法,可用工作表界面&的作用类比;
  3. 进一步地,引入用表达式赋值;
  4. 以上一节给每周一涂色为例,用range+for循环回避相对引用的问题,理解for循环中的step设置;

 

  • If 逻辑判断--过程控制
  1. 文件“DEMO-1-认识IF函数”,例1,在某一个单元格中,根据性别返回不同的称呼,理解在工作表界面写if···else函数和在vba中写if函数的异同;
  2. 将一列全用if转换,用for循环,进一步理解变量i在range中的使用;
  3. 在for循环中增加根据专业类填充专业代码的if语句,理解多种可能时使用elseif语句及对代码进行注释的方法;
  4. 将姓名为空的记录删除,用宏录制方式获得删除记录的代码,观察结果;
  5. 分析有些行没被删除的原因,思考如何解决?强调注意删除行时的陷阱;
  6. 解决方案较多,理解step -1的概念;
  • 用If退出for循环
  1. 文件“DEMO-1-认识IF函数”,例2,改写上节的生成工资条宏,循环操作的每一步都选表头,并粘贴到奇数列(先选该列第一个单元格),录制一
    次的宏再用for,计算循环多少次;
  2. 计算次数很麻烦,怎么回避?考虑用if终止for循环(exit for),观察循环结束的条件(插入到空行)。注意思考if语句的位置。
  3. 同理做回复工资表的宏。(可作为练习)
  4. 文件“DEMO-2-(作业)新个税计算公式”,演示if  (加and的条件)的写法,可不演示完。

 

需要理解并记住写法的概念:
(1)Sub ABC()……End Sub

(2)Dim i as integer
         For i= 1 to 10……Next

需要理解的概念:
  什么是宏?什么是VBA?录制宏时的相对引用是什么意思?什么是变量?

要点:选中第3行,观察删除时的表格变化情况,删除第3行,接着删第4行······共删除?次。进行录制