【问题标题】:How to select a Task on a Timeline on MSProject?如何在 MS Project 的时间线上选择任务?
【发布时间】:2021-10-23 14:18:46
【问题描述】:

我正在寻找一种在 MSProject 上创建时间线的方法,其颜色与我任务的“Text2”列中的关键字匹配。为此,我选择具有正确关键字的任务,并使用“TaskOnTimeline”命令。但是,此命令不会选择它刚刚插入时间线的任务,而且我在 vba 论坛中找不到似乎这样做的命令。有没有人知道避免这个问题的方法或特定命令? (顺便说一下,我用的是 MSProject 2016)

编辑:这是我使用的代码,我之前创建了两个数组,L()(为时间轴上的任务着色的关键词列表)和 Couleur()(颜色)

WindowActivate TopPane:=True
SelectRow Row:=1, RowRelative:=False

For i = 1 To ActiveProject.Tasks.Count

    SelectRow Row:=i, RowRelative:=False
    
    If Not ActiveProject.Tasks(i) Is Nothing Then
        If InStr(1, ActiveProject.Tasks(i).Text2, "Titre", 1) <> 0 Then
            WindowActivate TopPane:=False
            InsertTimelineBar
            WindowActivate TopPane:=True
            TaskOnTimeline
            'Rajouter de mettre la tache en legende
            
        Else
            If Not ActiveProject.Tasks(i).Text2 = "" Then
                For y = 0 To n
                    If InStr(L, ActiveProject.Tasks(i).Text2, L(y), 1) <> 0 Then
                        WindowActivate TopPane:=True
                        SelectRow Row:=i, RowRelative:=False
                        TaskOnTimeline
                        WindowActivate TopPane:=False
                        Font32Ex CellColor:=Couleur(y)
                        
                    End If
                Next y
            End If
        End If
    End If
Next i

问题是当我在时间轴上添加任务时;我尝试为添加的任务着色(在时间轴上而不是在甘特表上),但未选择任务,因此 Font32Ex 命令不起作用。

【问题讨论】:

  • 1) 编辑您的问题以显示您目前拥有的代码。 2) 是否将正确的任务添加到时间线,但您还想在甘特图中选择它?
  • 感谢您的回答!我添加了代码,我想在时间轴上选择的任务是在甘特图表上选择的,但不是在时间轴上(因此,如果我愿意,我可以为甘特图表着色,但不幸的是,我不能为时间轴着色)

标签: vba ms-project


【解决方案1】:

这是项目对象模型缺乏的另一个例子——没有直接的方法来选择时间线上的任务。

但是,您可以使用 SelectCellRight(或 SelectCellLeft)逐步完成时间线任务以找到您想要的任务。将任务添加到时间线后,尝试使用此例程格式化任务。

Sub FormatTimelineTask(uid As Long, color As Long)

    WindowActivate TopPane:=False

    SelectAll
    
    Dim numTlTasks As Long
    numTlTasks = ActiveSelection.Tasks.Count
    SelectCellUp
    
    Dim l As Long
    For l = 1 To numTlTasks
        SelectCellRight
        If ActiveCell.Task.UniqueID = uid Then
            Font32Ex color:=color
            Exit For
        End If
    Next l
    
End Sub

注意:我目前只有 Project 2013,因此我无法在 2016 上进行测试,因为它允许时间轴上有多个行。

【讨论】:

猜你喜欢
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 2018-04-26
  • 1970-01-01
  • 2018-12-02
  • 2020-08-10
相关资源
最近更新 更多