Изменение цвета текста в строке MS Project на основе поля Статус

Вопрос или проблема

Я хочу изменить цвет текста для целой строки в зависимости от того, что указано в поле “Статус”.

Я искал на других форумах и нашел решения, которые близки, но ничего, что действительно делает то, что мне нужно. Я знаю о функции выделения и условном форматировании, но не могу заставить их работать так, как мне требуется. Я написал код на VB для выполнения этой задачи примерно 5 лет назад, но я новичок, и написание очень базового кода заняло у меня около 5 дней, а затем я потерял его, когда ушел с последней работы. 🙁

Итак, я ищу просто немного VBA, который сделает следующее:

  • Если Статус = “Поздно”, то окрасить текст в строке в “КРАСНЫЙ”
  • Если Статус = “На графике”, то окрасить текст в строке в “ЗЕЛЕНЫЙ”
  • Если Статус = “Будущая задача”, то окрасить текст в строке в “ЧЕРНЫЙ”
  • Если Статус = “Завершено”, то окрасить текст в строке в “СЕРЫЙ”

Мне бы хотелось продвинуться и иметь что-то вроде следующего:
Если Статус = “На графике”, И % завершенности < 85%, И "Дата завершения" < 5 дней в будущем, то окрасить текст в строке "ОРАНЖЕВЫЙ"

Sub CompletePercentSub()

Dim t As Task
Dim i As Integer

‘Итерация через весь файл ms project

i = 1
For Each t In ActiveProject.Tasks

SelectRow Row:=i, RowRelative:=False

If Not t Is Nothing Then

    Select Case t.Status
        Case 0 'Завершено
            Font32Ex CellColor:=&H98FB98 'СВЕТЛО ЗЕЛЕНЫЙ
        Case 1 'На графике
            Font32Ex CellColor:=&HE0FFFF 'СВЕТЛО-КОРИЧНЕВЫЙ
        Case 2 'Поздно
            Font32Ex CellColor:=&HC0FF& 'СВЕТЛО-КРАСНЫЙ
        Case 2 'Будущая задача
            Font32Ex CellColor:=&HFFFFFF 'БЕЛЫЙ
    End Select
End If

i = i + 1

Next t

End Sub

Ответ или решение

Для изменения цвета текста в строке на основе значения поля "Статус" в Microsoft Project, вы можете воспользоваться макросами VBA. Я предлагаю вам следующий код, который поможет вам решить вашу задачу эффективно.

Код VBA для изменения цвета текста в строке по статусу

Sub ChangeTextColorByStatus()
    Dim t As Task
    Dim i As Integer
    Dim percentageComplete As Double
    Dim finishDate As Date
    Dim daysUntilFinish As Long

    ' Итерация по всем задачам в активном проекте
    i = 1
    For Each t In ActiveProject.Tasks
        ' Выбор строки текущей задачи
        SelectRow Row:=i, RowRelative:=False

        If Not t Is Nothing Then
            ' Получение значения процента завершения и даты окончания
            percentageComplete = t.PercentComplete
            finishDate = t.Finish
            daysUntilFinish = DateDiff("d", Now, finishDate)

            ' Изменение цвета текста в зависимости от статуса
            Select Case t.Status
                Case "Late"
                    Font32Ex CellColor:=&HFF0000 ' Красный
                Case "On Schedule"
                    If percentageComplete < 85 And daysUntilFinish <= 5 Then
                        Font32Ex CellColor:=&HFFA500 ' Оранжевый
                    Else
                        Font32Ex CellColor:=&H00FF00 ' Зеленый
                    End If
                Case "Future Task"
                    Font32Ex CellColor:=&H000000 ' Черный
                Case "Complete"
                    Font32Ex CellColor:=&H808080 ' Серый
            End Select
        End If
        i = i + 1
    Next t
End Sub

Как использовать код

  1. Открытие Microsoft Project: Запустите Microsoft Project и откройте нужный проект.

  2. Открытие редактора VBA: Нажмите ALT + F11, чтобы открыть редактор Visual Basic for Applications.

  3. Создание нового модуля: В редакторе выберите Insert > Module, чтобы создать новый модуль.

  4. Вставка кода: Скопируйте и вставьте приведённый выше код в окно модуля.

  5. Запуск макроса: Закройте редактор и вернитесь в Microsoft Project. Нажмите ALT + F8, выберите ChangeTextColorByStatus и нажмите кнопку Run.

Объяснение кода

  • Итерация по задачам: Код проходит все задачи в активном проекте, увеличивая счётчик i для выбора каждой строки.
  • Условия: Используется оператор Select Case для проверки статуса задачи и изменения цвета текста в зависимости от условия.
  • Обработка процентов выполнения: Для статуса "On Schedule" добавлена дополнительная логика, которая проверяет процент завершения и количество дней до окончания.

Заключение

Данный макрос позволяет гибко настраивать цвет текста в строках Microsoft Project на основе статуса задачи и других условий, что значительно упрощает визуальное восприятие состояния проектов. Пользователь сможет легко идентифицировать задачи по их статусу, что улучшит управление проектами и повысит продуктивность.

Если у вас возникнут дополнительные вопросы или потребуется помощь с другими аспектами VBA, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...