У меня есть простой макрос, который обновляет настраиваемое поле в 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
Что вы имеете в виду под этим ? Есть ли «Джон» и «Марк» два разных ресурса? Что вы вкладываете в MsgBox? Что вы ожидаете от других, и какую ценность вы ожидаете? – OpiesDad
Ваш код, как написано, будет выглядеть с именами ResourceNames (которые из документации отображаются только как список имен всех ресурсов), то если ваше имя ресурса отсутствует, оно вернет счет всех ресурсов. Поэтому, если ваши ресурсы были «John» и «Mark», тогда t.ResourceNames = «John, Mark» и ваш оператор if, как написано, определит, что «JOHN» находится в именах ресурсов и не помещается в счет. Если вы вместо этого искали «* TIM *», он поместил бы «2» в t.Text2 (количество ресурсов ....) – OpiesDad
Итак - так это итерация по каждой задаче, подсчитывает количество ресурсов на задание и заполняет t.text2 с подсчетом ресурсов для этой задачи. Проблема возникает, когда я хочу исключить имя из счета. Я хочу исключить «john» из подсчета и подсчитывать только другие ресурсы для каждой задачи. Глядя на это снова, я вижу, что мой код пропускает всю задачу, когда видит «Джон» в качестве одного из ресурсов и только считает ресурсы для задач, где «Джон» отсутствует. Pls игнорирует мое «это правильно в debug msgbox». –