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

问题描述 投票:0回答:2

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

vba ms-project microsoft-project-vba
2个回答
0
投票

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

例如,根据项目日历,这将为您提供12月的工作日数。

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

这是相关的MSDN文章。


0
投票

如果您的日历是标准的(E.G。周一至周五的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
© www.soinside.com 2019 - 2024. All rights reserved.