如何在MPP VBA中创建自定义日历,并在2个日期之间进行工作日差



是否可以在Microsoft Project中的VBA复制/创建一个日历(或从MPP日历中读取),然后在2个日期之间使用该日历来计算工作日差(持续时间)?

Microsoft Project具有一个函数DateDifference,该函数需要三个参数:开始日期,完成日期和 calendar 。您需要将其传递给日历对象,而不是日历的字符串名称。退货值是工作时间的数量,因此除以适当的数量来获得小时,通常为480(8小时 * 60分钟)。

例如,这为您提供了基于项目日历的12月的工作日。

Application.DateDifference("12/1/17","12/31/17", ActiveProject.Calendar) / 480

这是相关的MSDN文章。

如果您的日历是标准的(例如,从星期一到星期五的5天工作周),您可以创建自己的功能,例如:

Function Workdays(Start_Date As Date, End_Date As Date) AS Integer
    Dim Temp_Delta As Integer, X As Integer, Y As Integer
    Temp_Delta = End_Date - Start_Date
    Temp_Delta = 5 * (Temp_Delta  7)
    X = Weekday(End_Date, vbMonday)
    Y = Weekday(Start_Date, vbMonday)
    If X > 5 Then X = 5
    If Y > 5 Then Y = 5
    Temp_Delta = Temp_Delta + X - Y
    Workdays = Temp_Delta
End Function

最新更新