You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:57:20