Excel条件格式宏

时间:2014-06-09 01:59:06

标签: excel vba excel-vba

enter image description here我试图在Excel中编写一个宏来完成我需要在excel中完成的一些平凡的任务。我需要一个宏,它将根据值范围内的日期有条件地格式化值范围。它需要是动态的,因为每次运行时范围都会改变大小。我附上了最终表格应该是什么样的图片,并附上了这样格式的原因评论。

我对VBA很陌生,所以我似乎无法弄清楚如何做到这一点,但在我能够学习VBA之前需要宏才能编写这个代码。有人会介绍我如何做到这一点的一个例子吗? 感谢。

1 个答案:

答案 0 :(得分:12)

这可以让你走上正轨!

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)。 请注意,您可能需要更改&#34;;&#34;到&#34;,&#34;取决于您的本地化!您可以将范围切换到您需要格式化的范围,并修改示例公式以满足您的需要或创建新的。

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

HTH