在项目的字段中更新日期

时间:2018-01-26 07:27:46

标签: vba runtime-error ms-project datefield

我在使用VBA更新MS Project字段时遇到以下问题:

我试试这个:

For Each t In ActiveProject.Tasks 

     'The following displays correctly Mo 14.05.18
     Debug.Print Format(CDate("14.05.18", " ddd dd.mm.yy"))

     'The following results in an error 438 (Method not supported)
     t.Datum3 = Format(CDate("12.05.18","ddd dd.mm.yy"))
    'this works fine but i'm not able to sort it proberly since it is a text sort for date fields, which is not wanted ...
    't.Text25 = Format(CDate("12.05.15","ddd dd.mm.yy"))
 Next t 

似乎不是格式是一个问题(我尝试了各种格式,我甚至从对象中读取它以验证格式应该使用)但一般来说,我无法更新日期字段,我有这些问题来自MS Project的预定义日期字段以及用户定义的日期字段。

文本字段完全没有任何问题。

2 个答案:

答案 0 :(得分:1)

运行时错误438:对象不支持此属性或方法

您收到运行时错误438,因为Task对象没有名为Datum3的属性。尽管德语版本中的字段标题是" Datum3",但实际的属性名称是Date3。 (see MS Project object model, German version

次要问题

虽然MS Project将接受格式化为文本的日期字段值,但它不是必需的,也不是坏形式,因为它意味着日期字段是文本。而是设置如下值:

t.Date3 = CDate("14.05.18") 

注意:日期字段的显示格式在项目选项中设置(请参阅Change the Date FormatÄndern des Datumsformats)。

答案 1 :(得分:0)

Rachel的答案是最好的......但是,如果您的核心需求是排序并且您遇到文本,则另一种方法是使用ISO 8601格式的日期:YYYY-MM-DD。有关详细信息,请参阅https://en.wikipedia.org/wiki/ISO_8601。或者更好:https://xkcd.com/1179/