2016-01-08 3 views
0

У меня есть простой макрос, который обновляет настраиваемое поле в MS Project. Проблема в том, что он подсчитывает ресурс независимо, даже когда я пытаюсь его исключить. Например, если поле содержит «john» и «mark», он подсчитывает оба этих ресурса, когда я просто хочу, чтобы он подсчитал «отметку». Когда я отлаживаю его с помощью msgbox, код выбирает правильные данные.Исключить имена ресурсов с помощью MS Project в VBA

ignore case globally 
Option Compare Text 


Sub resourceCount2() 
Dim ts As Tasks 

    Set ts = ActiveProject.Tasks 
    Dim t As Task 

    For Each t In ts 
     If Not t Is Nothing Then 
      If Not t.Summary Then 
       If Not t.ResourceNames Like "*JOHN*" Then 
       t.Text2 = CStr(t.Resources.Count()) 
       End If 
      End If 
     End If 
    Next t 

End Sub 
+0

Что вы имеете в виду под этим ? Есть ли «Джон» и «Марк» два разных ресурса? Что вы вкладываете в MsgBox? Что вы ожидаете от других, и какую ценность вы ожидаете? – OpiesDad

+0

Ваш код, как написано, будет выглядеть с именами ResourceNames (которые из документации отображаются только как список имен всех ресурсов), то если ваше имя ресурса отсутствует, оно вернет счет всех ресурсов. Поэтому, если ваши ресурсы были «John» и «Mark», тогда t.ResourceNames = «John, Mark» и ваш оператор if, как написано, определит, что «JOHN» находится в именах ресурсов и не помещается в счет. Если вы вместо этого искали «* TIM *», он поместил бы «2» в t.Text2 (количество ресурсов ....) – OpiesDad

+0

Итак - так это итерация по каждой задаче, подсчитывает количество ресурсов на задание и заполняет t.text2 с подсчетом ресурсов для этой задачи. Проблема возникает, когда я хочу исключить имя из счета. Я хочу исключить «john» из подсчета и подсчитывать только другие ресурсы для каждой задачи. Глядя на это снова, я вижу, что мой код пропускает всю задачу, когда видит «Джон» в качестве одного из ресурсов и только считает ресурсы для задач, где «Джон» отсутствует. Pls игнорирует мое «это правильно в debug msgbox». –

ответ

0

Fixed это - код теперь считается каждый ресурс, содержащий задачи «Джон» и вычитает это число от общего объема ресурсов для выполнения этой задачи.

«игнорировать случай глобально Option Compare Text

Sub resourceCount() Dim ц как задачи Dim ресурсы() As String

Set ts = ActiveProject.Tasks 
Dim t As Task 


    For Each t In ts 

     Dim intCount As Integer 
     Dim res_count As Integer 
     res_count = 0 

     resources = Split(t.ResourceNames, ",") 

     For intCount = LBound(resources) To UBound(resources) 
      total_resources = UBound(resources) + 1 
      res_count = res_count + 1 

       If Trim(resources(intCount)) Like "*John*" Then 
       res_count = res_count - 1 

       End If 


     Next 

     t.Text2 = res_count 


Next t 

End Sub

Смежные вопросы