簡體   English   中英

以交替顏色格式化列,以第 1 行中的文本為條件

[英]Formatting column in alternating colours, conditional on text in Row 1

我有一個電子表格,我需要根據一周中的哪一天更改格式。 我還希望格式按行交替顏色,以幫助分解。 它應該是這樣的:

在此處輸入圖片說明

我有一些代碼可以將特定范圍的列格式化為交替顏色:

'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

但是,這並不是特別靈活,因為我希望能夠在任意數周(最多一年)內運行此報告,並且硬編碼特定單元格范圍將意味着重復相同的代碼 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,請以交替顏色更改列寬和格式? 周日等也一樣。

提前致謝。

請參閱我上面的評論,但您可以將循環縮短為:

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

感謝 Zac 指出更短的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM