首页 文章

MS Project VBA - 按显示行号迭代

提问于
浏览
0

我在此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 回答

  • 1

    您可以使用Application.SelectSheet(这样用户就不必手动选择任务) . 然后,您可以遍历ActiveSelection.Tasks集合 . 完成后,您可以使用Application.SelectBeginning仅选择第一个任务 .

相关问题