在此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
(如果可能的话,我不会强迫用户选择行)?
预先感谢, 朱塞佩
答案 0 :(得分:1)
您可以使用Application.SelectSheet(这样,用户不必手动选择任务)。然后,您可以遍历ActiveSelection.Tasks集合。完成后,您可以使用Application.SelectBeginning仅选择第一个任务。