Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: v-cand

[已解决]如何使用VBA代码实现条件格式的功能?

[复制链接]
发表于 2015-7-23 09:01 | 显示全部楼层
v-cand 发表于 2015-7-23 07:54
老师,很感谢你的帮忙,这个代码在运行时出现一点小小的问题,当数据不是每行都有时,就不能填充下面的单 ...

Sub test()
    Dim rng As Range, x As Range, d As Object
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dictionary")

    Set rng = [h2:k2]    '图例
    For Each x In rng
        d(x.Value) = x.Interior.Color
    Next

    Set rng = [a2:d100]   '自行修改数据的区域
    For Each x In rng
          If d.exists(x.Value) Then x.Interior.Color = d(x.Value)
    Next
End Sub

4.rar (12.14 KB, 下载次数: 1)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2015-7-23 09:08 | 显示全部楼层
爱疯 发表于 2015-7-23 09:01
Sub test()
    Dim rng As Range, x As Range, d As Object
    Application.ScreenUpdating = False
...

谢谢老师,9楼那个有没有办法解决呢
回复

使用道具 举报

发表于 2015-7-23 09:16 | 显示全部楼层
需求不同,处理方法也就不同:

如果是“输入1个值,就判断一次,填该单元格填充什么颜色(或不填充)”,可用3楼。

如果是“已录入所有值,需一次性填充”,可用11楼。
回复

使用道具 举报

 楼主| 发表于 2015-7-23 09:22 | 显示全部楼层
爱疯 发表于 2015-7-23 09:16
需求不同,处理方法也就不同:

如果是“输入1个值,就判断一次,填该单元格填充什么颜色(或不填充)”, ...

好的,谢谢老师
回复

使用道具 举报

发表于 2015-7-23 11:02 | 显示全部楼层
v-cand 发表于 2015-7-23 07:54
老师,很感谢你的帮忙,这个代码在运行时出现一点小小的问题,当数据不是每行都有时,就不能填充下面的单 ...

代码改成这样吧。
这样的话如果从上填充下面拖拉的话,也能有效果。
要实时有变化的,把数据区域改大点。
不要输入数据后再改区域。
如果要一次性修改已经输入的,就用版主的代码。
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Intersect(Range([H5].Value), Target) Is Nothing Then Exit Sub
  3. For Each Rng In Target
  4.     c = 0
  5.     For Each R In Range([h6].Value)
  6.         If Rng.Value = R.Value Then Rng.Interior.Color = R.Interior.Color: c = c + 1: Exit For
  7.     Next
  8.     If c = 0 Then Rng.Interior.Color = xlNone
  9. Next
  10. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 04:45 , Processed in 0.271351 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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