2015-10-17 26 views
2

更新:回答下面MS VBA项目关联的任务具有行

我已经建立了我的MS VBA项目的形式,有一些关于它的格式按钮,特别是“完成”按钮,改变所选的字体细胞灰色和删除线。下面的子程序工作正常,但...

Sub SetTaskNameFontDone() 

Dim T As Task 

If Not (ActiveSelection.Tasks Is Nothing) Then 
    For Each T In ActiveSelection.Tasks 
     ' Test for blank task row 
     If Not (T Is Nothing) Then 
       SelectTaskField Row:=T.ID, Column:="Name", RowRelative:=False 
       Font32Ex Color:=8355711 
       Font32Ex Strikethrough:=True 
     End If 
    Next T 
End If 
End Sub 

我碰到这个问题是行号似乎是一个物理位置数,即位置从纸张的顶部。因此,如果您“关闭”具有子任务的任务,则行号不再与任务ID相同,并且格式会应用于错误的行。

Case 1: Sheet when task is open: 
VBA Row #  TaskID  Task 
1    1  ParentTask1 (open) 
2    2   SubTask1-1 
3    3  ParentTask2 

Case 2: Sheet when task is closed (note change in row number) 
VBA Row #  TaskID  Task 
1    1  ParentTask1 (closed) 
2    3  ParentTask2 

两种可能的方法:

1)我可以在程序开始做OutlineShowAllTask​​s,但改变显示的轮廓的方式。我还没有找到指示哪些任务是开放的,所以我无法记住并恢复它,作为对OutlineShowAllTask​​s的补偿。

2)保存目标任务ID,然后遍历所有行,并比较每行的任务ID。但是,我还没有找到一种方法来遍历所有行并从行中获取Task ID。

任何有关如何将选定的任务与正确的行关联的建议将不胜感激。

回答