Форматирование столбца чередующимися цветами, условно для текста в строке 1 - PullRequest
0 голосов
/ 24 марта 2020

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

enter image description here

У меня есть код, который форматирует, задает c диапазоны столбцов для форматирования чередующимися цветами:

'Colour Sundays alternate light grey / dark grey
For Each cell In Range("AX1:AX" & lastRow)
If cell.Row Mod 2 = 1 Then
    cell.Interior.Color = RGB(217, 217, 217)
Else
    cell.Interior.Color = RGB(242, 242, 242)
End If
Next cell

Однако, это не особенно agile, так как я хочу иметь возможность запускать этот отчет в течение любого количества недель (до года), и жесткое кодирование, определяющее c диапазоны ячеек, будет означать повторяя один и тот же код 52 раза.

У меня также есть следующий код, который я использовал для ширины ячейки:

Dim Range1 As Range
Dim Cell1 As Range

Set Range1 = Range("O1:QA1")

For Each Cell1 In Range1
If Cell1 Like "*Mon*" Or Cell1 Like "*Tue*" Then
Cell1.ColumnWidth = 7.86

End If
Next Cell1

For Each Cell1 In Range1
If Cell1 Like "*Wed*" Or Cell1 Like "*Thu*" Then
Cell1.ColumnWidth = 7.86

End If
Next Cell1

For Each Cell1 In Range1
If Cell1 Like "*Fri*" Or Cell1 Like "*Sat*" Then
Cell1.ColumnWidth = 7.86

End If
Next Cell1

, который я использую для кодирования ширины столбца (это не Это тоже замечательно - я не могу понять, как сделать так, чтобы он учитывал все дни недели в одном и том же разделе кода, но он работает, поэтому я с радостью оставлю это).

Есть ли способ объедините этот код так, чтобы он читал: Если ячейка в строке 1 содержит Mon, Tue, Wed, Thu, Fri, Sat, изменить ширину столбца и формат чередующимися цветами? И то же самое по воскресеньям и др. c.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 марта 2020

См. Мой комментарий выше, но вы можете сократить ваши циклы до этого:

Sub x()

Dim Range1 As Range
Dim Cell1 As Range

Set Range1 = Range("O1:QA1")

For Each Cell1 In Range1
    Select Case True
        Case celll Like "*Sun*"
            Cell1.ColumnWidth = 8
        Case else
            Cell1.ColumnWidth = 7.86
    End Select
Next Cell1

End Sub

Спасибо Za c за указание еще более короткого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...