Microsoft Project VBA 实现任务指定字段变更时自动更新自定义字段Text10
Microsoft Project 2019 任务自定义日期字段变更监控VBA实现方案
实现逻辑
你需要使用Project内置的Project_Change事件,该事件会在项目内对象(任务/资源等)属性变更时触发,可直接获取到本次变更的字段类型,不需要全量遍历任务,不会出现卡顿问题。
操作步骤
- 打开目标Project文件,按
Alt+F11调出VBA编辑器 - 在左侧工程资源管理器面板中,双击
ThisProject对象,进入代码编辑界面 - 将以下代码粘贴到编辑区域,保存文件即可生效
完整代码
Private Sub Project_Change(ByVal pj As Project, ByVal Field As Long, ByVal NewVal As Variant) ' 仅处理任务层级的字段变更 If ActiveCell.Task Is Nothing Then Exit Sub Dim targetTask As Task Set targetTask = ActiveCell.Task Dim fieldName As String Dim logContent As String ' 匹配需要监控的4个自定义日期字段 Select Case Field Case pjTaskDate1 fieldName = "Date1" Case pjTaskDate2 fieldName = "Date2" Case pjTaskDate3 fieldName = "Date3" Case pjTaskDate4 fieldName = "Date4" Case Else ' 非目标字段直接退出 Exit Sub End Select ' 生成变更日志写入Text10,日期格式可根据需要调整 logContent = fieldName & " modified " & Format(Date, "mm/dd/yy") targetTask.Text10 = logContent End Sub
注意事项
- 打开文件时需要启用宏,否则事件代码不会触发
- 若同时修改多个目标字段,事件会按变更顺序依次触发,最终Text10会保留最后一个变更字段的记录,完全符合需求
- 该代码仅对当前粘贴的Project文件生效,如需应用到所有文件,需将代码存入全局模板
内容的提问来源于stack exchange,提问作者NelliNoodle
相关产品推荐
相关产品推荐

