No.1
以前做过考勤管理 , 以天为单位进行设置 , 根据不同的企业公司上班需求 , 严格来说,必须精细到分钟,这样就给我们提出了新的任务 。本节介绍一个简单的考勤应用模式,实现时间打卡 , 精确到分钟 。
上图为示例图片,也是主操作页和考勤管理主页 。
可以很清楚地看到员工信息一考勤记录,其实现起来很简单,直接在考勤日期单元格单击鼠标会自动弹出考勤设置页 。
下图为本表后半部分内容,主要是考勤总结计算 。
单击考勤表某个人的某一天单元格自动弹出下面对话框,进行考勤打卡 。
员工信息会自动显示出来,如果不正确就不用打卡 。
下面是打卡日期,出勤类型 , 这里多了两个类型,加班和迟到 。此两项和下面的上班时间和下班时间有一定的数据计算 。
可以设定上班时间,和下班时间,如果超出相应的工作时间就会提示选择 。
而且分别进行了一些时间计算,相对比较复杂一点 。
而且,此示例还增加了考勤导出功能,可以实现保存到一个新表当中备份 。
所以还是有一定的使用功能 。
No.2
下面看一下实现代码Private Sub CommandButton1_Click()Dim xObj As ObjectFor Each xObj In Me.ControlsIf TypeName(xObj) = "OptionButton" ThenIf xObj.Value ThenIf VBA.Len(getCstr(xObj)) = 0 Then MsgBox "打卡失败: " & xObj.Caption, vbInformation, "提示": Exit SubIf checkOut(getTimeHours) Then '检测如果迟到If xObj.Caption <> strK(6) Then MsgBox "没有选择正确!" & strK(6): Exit SubActiveSheet.Cells(ir, ic).Value = https://www.itzhengshu.com/excel/VBA.Right(strK(6), 1)MsgBox"打卡成功: " & VBA.vbCrLf & strK(6), vbInformation, "提示"Else '没有迟到If checkOn(getTimeHours) Then '检测如果加班If xObj.Caption <> strK(5) Then MsgBox "没有选择正确!" & strK(5): Exit SubActiveSheet.Cells(ir, ic).Value = https://www.itzhengshu.com/excel/VBA.Right(strK(5), 1)MsgBox"打卡成功: " & VBA.vbCrLf & strK(5), vbInformation, "提示"Else '不加班ActiveSheet.Cells(ir, ic).Value = https://www.itzhengshu.com/excel/getCstr(xObj)MsgBox"打卡成功: " & VBA.vbCrLf & xObj.Caption, vbInformation, "提示"End IfEnd IfThisWorkbook.SaveUnload MeEnd IfEnd IfNext xObjEnd Sub
信息初始化
Private Sub CommandButton1_Click()Application.ScreenUpdating = FalseDim R As Range, cell As RangeSet R = ActiveSheet.Range("B2")ClearCen R '清除数据Dim yArr, Ci As Long, Ri As LongyArr = ThisWorkbook.Worksheets("信息").UsedRangeCi = UBound(yArr, 2)Ri = UBound(yArr, 1)Set cell = R.Resize(Ri, Ci)With cell.Value = https://www.itzhengshu.com/excel/yArr.HorizontalAlignment = xlCenter.VerticalAlignment = xlCenter.Borders.LineStyle = 2.Borders.Color = RGB(189, 189, 235)End WithApplication.ScreenUpdating = TrueEnd Sub
考勤管理一般有专业的打卡机进行处理,可以导出xls文件,不过某些公司内部还是需要自己进行建表计算 , 所以这方面的应用也是十分广泛 。
欢迎关注、收藏
【Excel VBA: 考勤管理,精细时间打卡,迟到加班分秒不差】---END---