Excel VBA编程 典型实例——制作工资条
工资条是将每个员工的相关信息单独制作成一个表格,从而可以方便打印,并发送的员工手中。若一个一个进行制作这些工资条,将浪费很多时间。下面介绍一种使用VBA代码快速实现工资条的方法,便于会计人员提高工作效率。
1.练习要点
● 控件的应用
● VBA代码
2.操作步骤:
(1)新建一张空白工作簿,分别重命名Sheet1和Sheet2工作表标签名称为“工资表”和“条”。然后,在“工资表”工作表中,创建如图10-9所示的“宇杰公司工资表”表格。
图10-9 创建表格
提 示 | 选择Sheet1工作表标签,右击执行【重命名】命令。然后,在工作表标签的位置上,输入“工资表”名称。同理,重命名Sheet2工作表标签名称。 |
(2)选择【开发工具】选项卡,单击【控件】组中的【插入】下拉按钮,在【表单控件】
组中,选择【按钮(窗体控件)】按钮。然后,在“工资表”中,给制该形状,如图10-10所示。此时,将弹出一个【指定宏】对话框,将【宏名】修改为“工资条”文字。
图10-10 绘制【按钮(窗体控件)】按钮
提 示 | 由于本例使用的是VBA进行编辑代码来生成工资条,所以在绘制【按钮(窗体控件)】按钮时,弹出的对话框可以单击【取消】按钮,无须进行录制宏操作。 |
(3)右击绘制的控件按钮,执行【编辑文字】命令。然后,修改按钮名称为“生成工资条”文字,如图10-11所示。
图10-11 修改控件名称
(4)选择【开发工具】选项卡,单击【代码】组中的Visual Basic按钮,如图10-12所示。
图10-12 单击Visual Basic按钮
(5)在弹出的VBE窗口中,右击【工程管理器】窗口的空白处,执行【插入】|【模块】命令,即可插入一个模块1,如图10-13所示。
图10-13 插入模块
提 示 | 双击【工程管理器】窗口中的【模块1】按钮,即可弹出一个代码编辑窗口。 |
(6)在弹出的代码编辑窗口中,输入如图10-14所示的代码。
图10-14 输入代码
其中,输入的代码如下:
Public Sub 工资条()
'定义a,b,c变量为整型
Dim a As Long, b As Long, c As Long
'将a6单元格所在的列数赋值于a
a = Range("a6").CurrentRegion.Columns.Count
'将a6单元格所在的行数赋值于b
b = Range("a6").CurrentRegion.Rows.Count
'将N3单元格中的数据赋值于变量c
c = Range("N3")
'若变量a=0或者b=1,则弹出"无数据"提示对话框
If a = 0 Or b = 1 Then
MsgBox "无数据!"
Exit Sub
End If
'如果a>30或者b>1001,则弹出"项目不能>30个,人数不能>1000人!"提示对话框
If a > 30 Or b > 1001 Then
MsgBox "项目不能>30个,人数不能>1000人!"
Exit Sub
End If
'如果c=0或c<0或c>12,则弹出"没有月份或月份错误!"提示对话框
If c = 0 Or c < 0 Or c > 12 Then
MsgBox "没有月份或月份错误!"
Exit Sub
End If
'清空工资条中原来数据
Sheets("条").Cells.Delete shift:=xlUp
'新数据生成
For k = 1 To b - 1
Worksheets("条").Cells(k * 3 - 2, 1) = "月"
Range(Cells(4, 1), Cells(4, a)).Copy Worksheets("条").Cells(k * 3 - 2, 2)
Worksheets("条").Cells(k * 3 - 2, a + 1) = "签名"
Worksheets("条").Cells(k * 3 - 1, 1) = c
Range(Cells(4 + k, 1), Cells(4 + k, a)).Copy Worksheets("条").Cells(k * 3 - 1, 2)
Next k
Worksheets("条").Columns("B:B").Copy
Worksheets("条").Columns("A:A").PasteSpecial Paste:=xlPasteFormats
Worksheets("条").Columns(a + 1).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Worksheets("条").Cells.EntireColumn.AutoFit
Worksheets("条").Select
Worksheets("条").Range("A1").Activate
Application.ScreenUpdating = True
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论