一、问题的提出
人事、财务经常会用到工资条,如果手工添加比较麻烦,而且容易出错,我们可以通过录制宏,或者插入VBA代码的方法来解决。有了VBA后,我们可以定义按钮,绑定VBA代码,实现一键生成工资条,或者恢复成工资表。
二、实现方法
1. 生成工资条
主要是利用VBA获取表数据的条数,然后用select选取第一行,通过for循环来批量添加表头。
Sub gongzitiao()
Dim i As Integer
Dim n As Integer
n = Cells(Rows.Count, 1).End(xlUp).Row - 2 '获取要添加表头的个数
ActiveSheet.Rows("1:1").Select '选中第一行
For i = 1 To n '这里写上
Selection.Copy '复制第一行
ActiveCell.Offset(2, 0).EntireRow.Select '指针向下移动2行
Selection.Insert shift:=xlDown
Next i
End Sub
2. 恢复成工作表
有时,生成了工资条后,又想返回到工资表,但是因为VBA操作的不可逆性,所以又想让工资条恢复成工资表。代码如下:
Sub gongzibiao()
Dim i As Integer
Dim n As Integer
n = Cells(Rows.Count, 1).End(xlUp).Row / 2 - 1
ActiveSheet.Rows("3:3").Select
For i = 1 To n '这里写
Selection.Delete shift:=xlDown
ActiveCell.Offset(1, 0).EntireRow.Select
Next i
End Sub
由于删除一行后,下面的一行会自动补充上来,因此这时的offset偏移由原来的二行变成了一行。有了以上二种代码,可以轻松实现工资表与工资条的相互转化,十分的便利。
三、学后反思
- 操作前一定要备份工资表,因为VBA操作具有不可逆性。
- 其它类似的操作也可以先录制宏,再添加循环,以实现批量操作。
- VBA目前在网上有很多学习教程,再加上chatGPT的加持,所以学习起来并不难。相信磨刀不误砍柴工,掌握了VBA,让你的办公速度可以飞起来。