用于在工作组成员、项目经理和其他利益干系人之间规划、管理和交流项目日程安排和其他信息的 Microsoft 项目管理软件。
注:此回复已自动翻译。因此,它可能包含语法错误或表达尴尬。
您好 阿信
从您提供的代码及测试结果来看,这种行为比较特殊。 根据微软官方文档:
- Assignment.Text1 property (Project) 被定义为可读写(Read/Write)的 String 属性,用于获取或设置分配(Assignment)的本地文本自定义字段值。 (Project) (Assignment.Text1 属性 | Microsoft Learn
- Assignment.Number1 property (Project) 被定义为可读写(Read/Write)的 Double 属性,用于获取或设置分配(Assignment)的本地数字自定义字段值。 VBA-Docs/api/Project.Assignment.Number1.md at main · MicrosoftDocs/VBA-Docs (请注意,本帖中提供的参考资料仅提供英文版本。如需了解相关内容,我建议您使用可信赖的翻译工具或翻译服务进行辅助阅读。。)
从文档说明来看,Text1 和 Number1 理论上应当可以直接对现有的 Assignment 对象进行写入,而不仅限于新建的 Assignment。
您也可以尝试使用 SetField 方法,而不是直接对属性赋值:
ass.SetField pjAssignmentText1, "A"
ass.SetField pjAssignmentNumber1, "10"
由于 ass.Units = 100 可以正常执行,而 ass.Text1 和 ass.Number1 无法更新;同时您测试发现删除后重新创建 Assignment 又能够成功写入字段值,因此该问题更有可能与分配字段配置、项目类型,或特定版本中的行为差异有关,而不一定是 Project VBA 对象模型本身的限制。
为了进一步分析问题,烦请提供以下信息:
- Microsoft Project 的具体版本及 Build 号(文件 > 帐户 > 关于 Project)。
- 当前项目是本地 MPP 文件,还是连接到 Project Online / Project Server。
- Assignment Text1 和 Assignment Number1 字段是否配置了公式(Formula)或图形指示器(Graphical Indicators)。
- 执行代码时是否出现运行时错误,还是代码能够正常运行但字段值没有更新。
- 使用上述
SetField方法测试后的结果。
在获得上述信息后,可以进一步判断该问题是由字段配置、项目类型,还是当前所使用的 Project 版本引起的。
希望以上信息能够为您提供帮助,期待您的回复。