Excel VBA 巧列工作计划

工程师列工作计划时,核对日期与天数耗时且易出错。作者编写 Excel VBA 小程序,指定工作天数后,可自动扣除节假日、周末,计算工作开始和结束时间,还给出工作表格和脚本设计,可用函数验算安排是否正确。

Excel VBA 巧列工作计划

        有一种工作内容叫做给计划,工程师常常需要给出工作计划安排,工作天数和工作时期。所以Engineer常常需要对着日历一遍又一遍地核对日期与天数,浪费大量时间且错误率较高。作者写了一个VBA小程序,指定工作天数后,小工具会自动扣除节假日,周末,自动化计算各项工作需要的开始时间和结束时间,方便某些客户计划制定。工作表格设计如下:
脚本设计如下:

Public Sub CalcDate()
    Call CalcDateInternal("D3", "G32")
End Sub

Private Sub CalcDateInternal(Optional RgStart As String = "D3", Optional RgEnd As String = "G32")
    Dim Rg As Range
    Dim Ws As Worksheet
    
    Set Ws = Worksheets("Sheet3")
    Set Rg = Ws.Range(RgStart, RgEnd)

    Dim DateStartDay As String
    Dim DateStopDay As String
    Dim DateStartDayRow, DateStartDayCol, TimeNeedDays As Integer
        
    DateStartDayRow = 1
    DateStartDayCol = 3
    DateStartDay = Ws.Cells(DateStartDayRow, DateStartDayCol)
    For Each Row In Rg.Rows
        Row.Cells(1, 2) = "Martyn哥"
        Row.Cells(1, 3) = DateStartDay
        DateStopDay = CalcCurrStopDay(DateStartDay, Row.Cells(1, 1))
        Row.Cells(1, 4) = DateStopDay
        DateStartDay = CalcNextStartDat(DateStopDay)
    Next
End Sub

Private Function CalcNextStartDat(ByRef Curr As String) As Date
    Dim NeedDays As Integer
    NeedDays = 1
   CalcNextStartDat = Application.WorksheetFunction.WorkDay(Curr, NeedDays)
End Function

Private Function CalcCurrStopDay(ByRef Curr As String, NeedDays As Integer) As Date
    CalcCurrStopDay = Application.WorksheetFunction.WorkDay(Curr, NeedDays - 1)
End Function

        最后,您可以用=NETWORKDAYS(start_date,end_date,holidays)来计算验算一下您的安排是否正确。

        工具小脚本,作抛砖引玉,如有兼容性问题见谅! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值