|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 lsftest 于 2011-12-5 19:41 编辑
某单元格,大于5时,用红色背景色填充,小于5时,恢复原来背景色,这样的功能用条件格式可以轻易实现。
但现在要求这样:某单元格从未大于5时,使用原来的背景色,大于5时,用红色背景色,当从大于5回落到小于5的值时,不使用原来的背景色而是用绿色以区别于那些从未大于5的单元格。。
不知道以前有没有人做过,或者条件格式里有没有实现该功能更简单的方法,又得话请交流交流。。。
开始:
作为测试,只让a1~a5实现这功能。
新加一模块,模块里:
Dim a As String
Function lsftest(ByVal ce As Range) As Boolean
If Len(a) = 0 Then a = "00000"
If ce > 5 Then
Mid(a, ce.Row, 1) = "1"
lsftest = True
Else
If Mid(a, ce.Row, 1) = "1" Then
lsftest = True
Else
lsftest = False
End If
End If
End Function
在单元格A1里添加两个条件格式:
1.公式“=AND(A1>5,lsftest(A1))”,应用于=$A$1:$A$5,如果为真则停止,格式为用红色填充做背景色。
2.公式“=lsftest(A1)”,应用于=$A$1:$A$5,如果为真则停止,格式为用绿色做背景色。
完成!
可以改变A1~A5里的值进行测试。。
但这方法会在关闭工作簿再打开的时候,一开始可能会出现错误的格式结果,这是因为状态变量a在工作簿关闭后没有进行保存,如果关闭前保存打开时先读这变量,应该就不会出现问题了,这里只是做个测试示范,如何保存A之类的细节,看具体情况自己定。
|
|