2017-02-18 10 views
0

단일 작업으로 간단한 작업이 있습니다. 작업 현황보기에서 나는 그런 1048577.MS Project 2016 VBA 할당 UniqueID가 화면과 일치하지 않습니다.

로 할당 고유 ID를 부여하는가 UniqueID 칼럼을 게재하고 난 그 할당 ID를 확인하려면 다음 샘플 코드 실행 (

Sub CheckAssignments() 
    Dim oldTsks As Tasks 
    Dim wrdAss As Assignment 
    Dim wrdAss2 As Assignment 

    Set prj = ActiveProject 


    Set oldTsks = ActiveSelection.Tasks 

    For Each t In oldTsks 
     Debug.Print "Task ID: " & t.ID & " Task UID: " & t.UniqueID & " Task Name: " & t.Name & " Assignment Count: " & t.Assignments.Count 
     For Each a In t.Assignments 
      Debug.Print " Assignment UID is: " & a.UniqueID 
      Debug.Print " Assignment Resource is: " & a.ResourceUniqueID & " - " & a.ResourceName 
      Debug.Print " Assignment Index is: " & a.Index 
     Next 
    Next 

End Sub 

내가 이것을 실행 올바른 작업을 선택했는지 확인) 다음 결과 집합을 얻습니다.

Task ID: 1 Task UID: 1 Task Name: New Task Assignment Count: 1 
    Assignment UID is: 2097153 
    Assignment Resource is: 1 - Fred 
    Assignment Index is: 1 

질문 : 2097153은 어디서 오는가? 그리고 Assignments 컬렉션을 반복 할 때 왜 1048577을 찾을 수 없습니까?

답변

1

MS Project에서 알려진 버그처럼 보입니다. 분명히 할당 객체를 통해 루핑 할 때 ID는 2^20 또는 1,048,576만큼 떨어져 있습니다. 두 숫자 중 하나를 사용하여 과제를 참조 할 수 있지만 실제 문제는 객체별로 반복 할 때 과제 컬렉션이 안정적이지 않다는 점입니다. 해결 방법은 결국 Assignments.Count 속성을 사용하고 For Each a Assignments를 사용하는 대신 Count를 1에서 반복하는 것입니다.