Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3595|回复: 11

[已解决]条件格式的公式转换为VBA代码求助

[复制链接]
发表于 2016-1-5 14:33 | 显示全部楼层 |阅读模式
本帖最后由 安全网 于 2016-1-5 15:54 编辑

AND(I16<>"",(TODAY()-I16>=3)*(I16<=TODAY()),K16="",N16="")
AND(K3<>"",(TODAY()-K3>=2)*(K3<=TODAY()),M3="")
AND(M5<>"",(TODAY()-M5>=4)*(M5<=TODAY()),OR(O5="",P5=""))
求助将以上3个条件格式的公式转换为VBA代码
最佳答案
2016-1-5 15:15
条件格式有什么不好吗?
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     c = Target.Column
  3.     r = Target.Row
  4.     clor = -4142
  5.     If r < 3 Then Exit Sub
  6.     If Target.Count > 1 Then Exit Sub
  7.     Target.Interior.ColorIndex = clor
  8.     If Target = "" Then Exit Sub
  9.     If c <> 9 And c <> 11 And c <> 13 Then Exit Sub
  10.     If c = 9 Then
  11.         If Target <= Date - 3 And Len(Cells(r, "K") & Cells(r, "N")) = 0 Then clor = vbRed
  12.     ElseIf c = 11 Then
  13.         If Target <= Date - 2 And Len(Cells(r, "M")) = 0 Then clor = vbYellow
  14.     ElseIf c = 13 Then
  15.         If Target <= Date - 4 And (Len(Cells(r, "P")) = 0 Or Len(Cells(r, "O")) = 0) Then clor = vbGreen
  16.     End If
  17.     Target.Interior.Color = clor
  18. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-1-5 14:34 | 显示全部楼层
附件已上传

条件格式0105.rar

12.54 KB, 下载次数: 2

回复

使用道具 举报

发表于 2016-1-5 15:15 | 显示全部楼层    本楼为最佳答案   
条件格式有什么不好吗?
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     c = Target.Column
  3.     r = Target.Row
  4.     clor = -4142
  5.     If r < 3 Then Exit Sub
  6.     If Target.Count > 1 Then Exit Sub
  7.     Target.Interior.ColorIndex = clor
  8.     If Target = "" Then Exit Sub
  9.     If c <> 9 And c <> 11 And c <> 13 Then Exit Sub
  10.     If c = 9 Then
  11.         If Target <= Date - 3 And Len(Cells(r, "K") & Cells(r, "N")) = 0 Then clor = vbRed
  12.     ElseIf c = 11 Then
  13.         If Target <= Date - 2 And Len(Cells(r, "M")) = 0 Then clor = vbYellow
  14.     ElseIf c = 13 Then
  15.         If Target <= Date - 4 And (Len(Cells(r, "P")) = 0 Or Len(Cells(r, "O")) = 0) Then clor = vbGreen
  16.     End If
  17.     Target.Interior.Color = clor
  18. End Sub
复制代码

条件格式0105.rar

20.08 KB, 下载次数: 9

回复

使用道具 举报

 楼主| 发表于 2016-1-5 15:36 | 显示全部楼层
条件格式看起来比VBA简单多了
回复

使用道具 举报

 楼主| 发表于 2016-1-14 10:27 | 显示全部楼层
grf1973 发表于 2016-1-5 15:15
条件格式有什么不好吗?

现在遇到一个这样的问题,不知道是否能实现。1.如果在K/N列有数据输入时,I列的超期填充颜色有红色自动变为无填充颜色;2.当M列有数据输入时,K列超期的颜色黄色自动变成无填充颜色:如果O/P列有数据输入时,M列超期的颜色绿色自动变成无填充颜色。请高手帮忙?
回复

使用道具 举报

发表于 2016-1-14 16:50 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     c = Target.Column
  3.     r = Target.Row
  4.     clor = -4142
  5.     clor1 = clor: clor2 = clor: clor3 = clor
  6.     If r < 3 Then Exit Sub
  7.     If c < 9 Or c > 16 Then Exit Sub
  8.     If Cells(r, 9) <= Date - 3 And Len(Cells(r, "K") & Cells(r, "N")) = 0 Then clor1 = vbRed
  9.     If Cells(r, 11) <= Date - 2 And Len(Cells(r, "M")) = 0 Then clor2 = vbYellow
  10.     If Cells(r, 13) <= Date - 4 And (Len(Cells(r, "P")) = 0 Or Len(Cells(r, "O")) = 0) Then clor = vbGreen
  11.     Cells(r, 9).Interior.Color = clor1
  12.     Cells(r, 11).Interior.Color = clor2
  13.     Cells(r, 13).Interior.Color = clor3
  14. End Sub
复制代码

条件格式0105.rar

20 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2016-1-14 17:08 | 显示全部楼层
grf1973 发表于 2016-1-14 16:50

那个浅色的颜色能否不设置,还有I列输入日期了,K列单元格空 的K列也出现黄色填充,能否给每列VBA加个本列单元个非空才显现
QQ图片20160114165701.png
回复

使用道具 举报

 楼主| 发表于 2016-1-14 18:05 | 显示全部楼层
grf1973 发表于 2016-1-14 16:50

还有能否改成按钮的宏,能完全实现3个条件格式的功能
回复

使用道具 举报

发表于 2016-1-15 10:32 | 显示全部楼层
请看附件。

条件格式0105.rar

24.94 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2016-1-15 11:17 | 显示全部楼层
grf1973 发表于 2016-1-15 10:32
请看附件。

这个无填充颜色的背景色还是浅青色,能否设置成工作表的背景颜色,即工作表示什么颜色,这个单元格就显示什么颜色。
QQ图片20160115110919.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 04:05 , Processed in 0.462890 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表