职工考勤表(vba工作日自动填充批量打印)---源码在最后

资源下载链接:职工考勤表(vba工作日自动填充批量打印)---源码在最后-互联网文档类资源-CSDN下载

功能使用说明:

1.找到开发工具----打开vb编辑器

2.此处代码均可根据自己需要更改

输入开始日期StartDay、结束日期EndDay,打印这期间工作日的表格,每个日期打印两遍,非工作日不打印
'目前仅支持2022年工作日判断,新年份需要手动更新--节假日表

3.运行代码,日期自动填充至单元格f1(可在代码中根据自身需要修改),并打印2月8号至2月28号期间工作日的考勤表,每个日期打印两遍

源码:


'输入开始日期StartDay、结束日期EndDay,打印这期间工作日的表格,每个日期打印两遍,非工作日不打印
'目前仅支持2022年工作日判断,新年份需要手动更新节假日表


Sub 工作日考勤表打印()
    Dim TheDate, StartDay, EndDay As Date
    Dim stn, isWeekDay, celname As String
        stn = "sheet1"  '工作表名称   ----可修改
        celname = "f1" '填入日期的单元格名称----可修改  a2 --   f1 --局
        StartDay = #2/8/2022#   '#########输入开始日期,格式:月/日/年###########
        EndDay = #2/28/2022# '#########输入结束日期,格式:月/日/年###########
        TheDate = DateSerial(Year(StartDay), Month(StartDay), Day(StartDay)) '获取开始日期
       
xunhuan:
        While TheDate <= EndDay '循环,直到跳出结束日期
        
            isWeekDay = workDay(TheDate) '调用方法---判断是否是工作日
            
            If isWeekDay = "休" Then    '是工作日则不打印----继续下一次循环
                Debug.Print "不打印!" & TheDate
                TheDate = TheDate + 1
                GoTo xunhuan
            End If
            
            Sheets(stn).Range(celname) = Format(TheDate, "yyyy年mm月dd日")   '设置单元格celname的内容为日期
           
            Sheets(stn).PrintOut  '同一日期第一次打印---上午
            Debug.Print "第一次打印---上午" & TheDate
            
            Sheets(stn).PrintOut  '同一日期第二次打印---下午
            Debug.Print "第二次打印---下午" & TheDate
            
            TheDate = TheDate + 1 '当前日期的下一天
        Wend
       
End Sub




'判断指定日期是否是工作日,是返回"○",不是返回 "休"
'判断方法----(1)先判断是否是周一至周五(2)遍历节假日表,查询是否是特殊日期
Function workDay(rq)
    Dim cel As Range
    If Weekday(rq) = 1 Or Weekday(rq) = 7 Then
        temp = "休"
        For Each cel In Range("节假日表!B2:B17")
            a = DateDiff("d", cel.Value, rq)
            If a = 0 Then
                temp = "○"
                Exit For
            End If
        Next
    Else
        temp = "○"
        For Each cel In Range("节假日表!A2:A37")
            a = DateDiff("d", cel.Value, rq)
            If a = 0 Then
                temp = "休"
                Exit For
            End If
        Next
    End If
    workDay = temp
End Function





 附表格:

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值