我试图在Excel中编写一个宏来完成我需要在excel中完成的一些平凡的任务。我需要一个宏,它将根据值范围内的日期有条件地格式化值范围。它需要是动态的,因为每次运行时范围都会改变大小。我附上了最终表格应该是什么样的图片,并附上了这样格式的原因评论。
我对VBA很陌生,所以我似乎无法弄清楚如何做到这一点,但在我能够学习VBA之前需要宏才能编写这个代码。有人会介绍我如何做到这一点的一个例子吗? 感谢。
答案 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