分享

Excel VBA(5) – 一键制作工资条

 L罗乐 2019-02-08

今天教一个 VBA 的经典案例:自动制作工资条。


这也是一个非常实用的案例,掌握了思路,在很多类似场景都能应用,比如隔行插入空行等等。


案例:


以下是原始的工作表,要做成工资条,需要隔行插入表头,打印后剪下来。

如何能点一下按键就自动插入所有表头?像图二那样?


解决方案:


我们刚开始教 VBA 的时候说过,初学者可以先录制宏,再按需求修改 VBA 代码,快速完成程序开发,今天就用这个思路。


1. 点击菜单栏的“开发工具”-->'宏'-->'录制宏'

2. 给宏取名“工资条”-->点击'确定'

3. 选中表头行 -->复制-->将鼠标移至需要插入表头的行-->右键单击“插入复制的单元格”

4. 停止录制宏

5. 点击“开发工具”-->“插入”-->'按钮'

6. 在弹出的指定宏窗口中选择我们刚才创建的“工资条”宏 --> 单击“确定”

7. 将按钮名称改为“制作工资条”

8. 选中按钮 -->右键单击“指定宏”

9. 在弹出的窗口中选择“工资条”-->点击“编辑”

10. 在打开的 VBE 代码窗口里,就可以看到刚才录制的宏代码

  • 我给每一句代码后面加入了注释

  • VBA 的注释是以 ' 开头,颜色为绿色

  • 代码非常简单,就是刚才录制的每一步动作的语言描述


Sub 工资条()

'

' 工资条 Macro

'

    Rows('4:4').Select              '选中第四行

    Selection.Copy                  '复制所选区域

    Rows('6:6').Select          '选中第六行

    Selection.Insert Shift:=xlDown  '插入复制的区域    

End Sub

11. 我们曾经说过,录制宏只能实现一个动作,无法循环调用。

  • 现在点击这个按钮,效果如下

  • 每点击一次,就在第六行插入一次表头,完全机械执行录制的动作

  • 所以我们要对宏进行后期加工

12. 在代码中加入、修改红色部分,就完成了

  • Dim i As Long:

    • 声明变量 i,类型为 Long

    • 其实以本例的数据量来说,定义为 Integer 也足够了

    • 变量的声明我们下次会细说


  • For i = 6 To 200 Step 2:

    • i 从 6 开始,到 200 结束,步长为 2

    • 因为我们第一次要在第 6 行插入,所以从 6 开始

    • 表格总共 100 行不到,隔行插入表头后,行数会翻倍,所以总数定为 200

    • 步长 2 相当于 i=i 2,即隔行执行

  • Rows(i).Select:

    • 括号里改用变量 i,即每次选择第 i 行

    • 配合 for 语句实现循环效果


Sub 工资条()

'

' 工资条 Macro

'

Dim i As Long

For i = 6 To 200 Step 2



    Rows('4:4').Select              '选中第四行

    Selection.Copy                  '复制所选区域

    Rows(i).Select

    Selection.Insert Shift:=xlDown  '插入复制的区域

      

Next

End Sub

14. 现在,按一下按钮,泡杯茶回来,工资条就做好了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多