首页 > 解决方案 > 如何以 4/3/4/3 模式为列着色?

问题描述

我的日历的布局。我正在尝试在与我在工作表上制作的日历上的周末(周五至周日)相关的列中着色。本质上,该模式将类似于 4 列无填充、3 列有填充、4 列无填充等。

我想要一个比我拥有的更优雅的解决方案,因为我的(目前)非常缓慢和缓慢。

注意:rng = 我的日历范围

For Each col In rng.Columns
    For Each cell In col.Cells
        If k = 5 Or k = 6 Or k = 7 Then
            cell.Interior.Color = RGB(210, 210, 210)
        ElseIf k = 8 Then
            k = 1
        End If
    Next cell
    k = k + 1
Next col

标签: excelvba

解决方案


基于涉及列索引和 MOD 函数的公式的条件格式规则应该做得很好。

Sub Bands_43()

    With Worksheets("sheet2")

        'reference columns B:Z
        With .Range("B:Z")

            .FormatConditions.Delete

            With .FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ROW(1:1)>3, MOD(COLUMN(A:A)-1, 7)>3)")
                .Interior.Color = RGB(210, 210, 210)
            End With

        End With

    End With

End Sub

推荐阅读