【问题标题】:Excel Conditional Formatting macroExcel 条件格式宏
【发布时间】:2015-01-30 22:12:11
【问题描述】:

我正在尝试在 excel 中编写一个宏来完成一些我需要在 excel 中完成的日常任务。我需要一个宏,它将根据值范围内的日期有条件地格式化值范围。它需要是动态的,因为每次运行时范围都会改变大小。我附上了一张最终工作表应该是什么样子的图片,并说明了为什么它被格式化的原因。

我对 VBA 很陌生,所以我似乎不太清楚如何做到这一点,但在我能够很好地学习 VBA 之前需要宏来编写它。有人介意向我展示一个如何做到这一点的例子吗? 谢谢。

【问题讨论】:

标签: vba excel


【解决方案1】:

这应该让你走上正轨!

Sub Main()

'---Variables---
Dim myRange As Range

'---Customize---
Set myRange = ThisWorkbook.Sheets(1).Range("A:D") 'The range to be formatted

'---Logic---
myRange.FormatConditions.Delete 'Clear
'Rules that are up in the list have higher priority
Call FormatRange(myRange, 3, "=AND($D1<TODAY()-2;NOT(ISBLANK($D1)))")
Call FormatRange(myRange, 29, "=AND($D1<TODAY()-1;NOT(ISBLANK($D1)))")
Call FormatRange(myRange, 45, "=AND($D1<TODAY();NOT(ISBLANK($D1)))")
Call FormatRange(myRange, 10, "=$D1=TODAY()")
'Note that you may have to use , instead of ; depending on your localization!
'You can find ColorIndexes from http://dmcritchie.mvps.org/excel/colors.htm

End Sub

'A support method that makes creating new conditional formats a little easier
Public Sub FormatRange(r As Range, colorIndex As Integer, formula As String)
r.FormatConditions.Add xlExpression, Formula1:=formula
r.FormatConditions(r.FormatConditions.Count).Interior.colorIndex = colorIndex
End Sub

将代码复制到 Visual Basic 编辑器中的新代码模块 (ALT+F11)。 请注意,您可能需要更改“;”改为“,”,具体取决于您的本地化!您可以将范围切换为您需要格式化的范围,并修改示例公式以满足您的需要或创建新的。

您可以找到 ColorIndexes here 和有关制作实际公式的信息 here

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多