繁体   English   中英

Excel条件格式宏

[英]Excel Conditional Formatting macro

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

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

这应该让你走上正轨!

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以及有关在此处制作实际公式的信息

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM