如何根据 vba 中的值用颜色格式化两个日期之间的单元格?

如何根据 vba 中的值用颜色格式化两个日期之间的单元格?

(如果这个问题难以理解,我很抱歉,因为我无法发布图片)

我曾尝试在网上寻找解决方案,但没有成功。

理想情况下,我想使用条件格式来突出显示两个日期之间的日期行中的每个单元格。但有一个问题...我希望颜色由另一个单元格中的值指定...如果可以使用模块来实现,那就太好了!

即,我在电子表格的 F2 中水平插入了一整年日历中的每一天。如果 C2 = 01/12/14 & D2 = 24/12/14 且 E2 = 3。则 C2 和 D2 日期之间的所有单元格将填充红色。同样,如果 C3 = 01/05/14 & D3 = 05/05/14 且 E3 = 2,则单元格将填充蓝色。

谢谢

答案1

我不相信在使用 Excel 内置的条件格式时有任何方法可以动态选择颜色。不过,正如您所猜测的,您可以使用一些 VBA 来实现。

假设 C 列包含范围中的较低日期,D 列包含范围中的较高日期,E 列包含颜色索引(参见这里),并且 F 列包含我们正在测试的日期(这是我们要着色的单元格),您可以创建以下子程序:

Public Sub update_colors()
    Dim rngDates As Range
    Set rngDates = Sheet1.Range("F2:F3")

    Dim rngDateCell As Range
    For Each rngDateCell In rngDates.Cells
        If Sheet1.Cells(rngDateCell.Row, 3).Value <= rngDateCell.Value And Sheet1.Cells(rngDateCell.Row, 4).Value >= rngDateCell.Value Then
            rngDateCell.Interior.ColorIndex = Sheet1.Cells(rngDateCell.Row, 5).Value
        End If
    Next rngDateCell

End Sub

将第三行的 F2:F3 设置为工作表中的整个日期范围。

您可以使用按钮启动此子路由/udf。在开发人员选项卡上(转到这里有关如何启用它的说明(如果您尚未启用它)单击“插入”并选择“表单控件”下的按钮。在工作表的某个位置绘制按钮(之后您可以移动它),然后从列表中选择您刚刚创建的子程序。现在,当您单击按钮时,子程序将运行。

如果您不喜欢这些颜色,您可以使用 .interior.colorindex() 以外的其他方法设置单元格颜色。我非常喜欢 .Interior.Color = RGB(,,) 您需要在工作表中的某个位置有 RGB 值才能实现这一点,但您将有数百万种颜色可供选择,而不仅仅是 colorindex 允许的 56 种。

相关内容