Окрашивание определенных ячеек с помощью Excel VBA выключено одной ячейкой - PullRequest
0 голосов
/ 01 июля 2011

Я создаю таблицу Excel на основе записей в пользовательской форме.Одна запись представляет собой отчетный интервал в течение продолжительности проекта.Скажем, интервал между отчетами составляет три месяца, а продолжительность Фазы 2 - 10 месяцев, а Фазы 3 - три месяца.

Мои столбцы структурированы следующим образом с расстоянием в одну ячейку между фазами:

Phase1: Starting phase
Phase2: Working phase
Phase3: Closing phase

Phase1  Phase2                      Phase3
||||||  ||||||||||||||||||||||||||| ||||||

Интервалы между отчетами должны быть помечены как цветные ячейки в Phase2 и Phase3 следующим образом:

Phase1  Phase2                        Phase3
||||||  |||||||O|||||||||||O||||||||  ||O||||

Это мой код для окрашивания ячеек:

For x = 1 To (Implementationduration + Closingduration - 1) / 3
            Select Case x
                Case Is < Implementationduration:
                    Call SetFontAndBackground(cells(Rowindex, Phase1CellLast() + Columncounter * 3), cells(Rowindex, Phase1CellLast() + Columncounter * 3), False, False, "", 10, False, "b", "lcyan", False)
                    Columncounter = Columncounter + 4
                Case Is > Implementationduration:
                    Call SetFontAndBackground(cells(Rowindex, Phase1CellLast() + Columncounter * 3 + 1), cells(Rowindex, Phase1CellLast() + Columncounter * 3 + 1), False, False, "", 10, False, "b", "lcyan", False)
                    Columncounter = Columncounter + 4
            End Select
Next x

Проблема в том, что цветные ячейкив Phase3 не правильно расположены.Они от одной клетки.Для раскрашивания я использую подпрограмму для форматирования ячеек.Я не могу найти ошибку в своем коде.

1 Ответ

1 голос
/ 01 июля 2011

Нашел проблему.Мои утверждения выбора случая были неверны.Это должно быть:

For x = 1 To (Phase2duration + Phase3duration - 1) / 3
            Phase2range = Phase1CellLast() + Columncounter * 3
            Select Case Phase2range

                Case Is < Phase2CellLast():
                  Call SetFontAndBackground(cells(Rowindex, Phase1CellLast() + Columncounter * 3), cells(Rowindex, Phase1CellLast() + Columncounter * 3), False, False, "", 10, False, "b", "lcyan", False)
                    Columncounter = Columncounter + 4
                Case Is > Phase2CellLast():
                    Call SetFontAndBackground(cells(Rowindex, Phase1CellLast() + Columncounter * 3 + 1), cells(Rowindex, Phase1CellLast() + Columncounter * 3 + 1), False, False, "", 10, False, "b", "lcyan", False)
                    Columncounter = Columncounter + 4
            End Select
Next x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...