Excel条件格式宏

use*_*225 4 excel vba excel-vba

在此输入图像描述我正在尝试在excel中编写一个宏来执行一些我需要在excel中完成的平凡任务.我需要一个宏,它将根据值范围内的日期有条件地格式化值范围.它需要是动态的,因为每次运行时范围都会改变大小.我附上了最终表格应该是什么样的图片,并附上了为什么格式化这种方式的原因.

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

nat*_*des 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
Run Code Online (Sandbox Code Playgroud)

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

您可以在此处找到ColorIndexes 以及有关在此处制作实际公式的信息.

HTH