MS Project:自定义宏替换非活动任务样式及删除线设置问题
解决方案
1. 解决删除线无法添加的问题
TextStyles32Ex 方法支持 Strikethrough 参数,直接在对应行添加该参数即可为非活动任务设置删除线:
TextStyles32Ex Item:=19, Font:="Gill Sans MT", Color:=12566463, Strikethrough:=True
2. 避免覆盖已定义的“Inactive Tasks”样式
直接使用 TextStyles32Ex 会将未指定的样式参数重置为默认值,导致原有自定义样式被覆盖。建议通过 TextStyle 对象修改指定属性,保留原有样式的其他设置:
修改后的完整宏代码:
Sub Stylize_Project() Dim numTasks As Long numTasks = ActiveProject.Tasks.Count 'Count the number of Tasks (Rows) on active Project On Error Resume Next SelectAll Font32Ex Name:="Gill Sans MT" Font32Ex Size:="9" 'Update Gantt Chart Titles and Font Style TextStyles32Ex Item:=0, Font:="Gill Sans MT", Size:="8" 'All MS Project Fonts TextStyles32Ex Item:=14, Font:="Gill Sans MT", Size:="8", Italic:=False, Bold:=False 'Gantt Bars Right Text Font GanttBarEditEx Item:="1", RightText:="Task Summary Name" 'Show task summary name in Gantt chart ' 修改非活动任务样式,保留原有设置仅更新指定属性 Dim inactiveTaskStyle As TextStyle Set inactiveTaskStyle = ActiveProject.TextStyles(19) ' 对应Item:19的非活动任务样式 With inactiveTaskStyle.Font .Name = "Gill Sans MT" .Color = 12566463 .Strikethrough = True ' 如需保留原有字号、粗体/斜体等,不要修改这些属性即可 End With inactiveTaskStyle.Apply End Sub
补充说明
- 通过
TextStyle对象操作时,仅修改需要调整的属性(字体、颜色、删除线),其他原有样式参数会被保留,不会被重置为默认值。 - 如果不需要保留原有字号等属性,也可以直接在
TextStyles32Ex中明确指定所有需要的参数,避免遗漏导致的样式重置:
TextStyles32Ex Item:=19, Font:="Gill Sans MT", Size:="原有字号", Color:=12566463, Strikethrough:=True, Italic:=原有状态, Bold:=原有状态
内容的提问来源于stack exchange,提问作者Francisco Ricardo Salas Villas
相关产品推荐
相关产品推荐

