我在此MS Project VBA宏中使用 for
循环时遇到问题:
Sub Check_Change_Article()
Dim ProjTasks As Tasks
Dim ProjTask As Task
Dim Art As String
Dim ArtOld As String
Set ProjTasks = ActiveProject.Tasks
ArtOld = " "
For Each ProjTask In ProjTasks
If Not (ProjTask Is Nothing) Then
Art =ProjTask.Text22
If (Art != ArtOld) Then
ProjTask.Text4 = "CHANGE"
End If
ArtOld = Art
End If
Next ProjTask
End Sub
项目实例
Case 1: Sheet when task is open:
VBA Row # TaskID Text22 Text4
1 1 PNL50R CHANGE
2 2 PNL50R
3 3 JPL50Y CHANGE
Case 2: User can filter, group or order tasks (note change in row number)
VBA Row # TaskID Text22 Text4
1 3 PNL50R CHANGE
2 1 PNL50R CHANGE
3 2 JPL50Y
我读了这个讨论:ms project VBA associate task with row
使用 ActiveSelection.Tasks
而不是 ActiveProject.Tasks
我看到 for
循环迭代遵循VBA行 .
是否可以设置循环以按VBA行号进行迭代,而不使用 ActiveSelection
(如果它强制用户选择行,则为's possible, I wouldn')?
在此先感谢,朱塞佩
1 回答
您可以使用Application.SelectSheet(这样用户就不必手动选择任务) . 然后,您可以遍历ActiveSelection.Tasks集合 . 完成后,您可以使用Application.SelectBeginning仅选择第一个任务 .