打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用工作薄事件动态标记相同的数据

      今天说一下Workbook_SheetSelectionChange事件,这是一个工作薄事件,可以对所有工作表生效。

       只要选择的单元格位置变了,就会触发它里面写的代码。

      于是我们就可以利用工作薄事件动态标记相同的数据,像下图这样:

1 代码

这个代码放在工作薄模块下即可使用,但只对sheet1生效,代码里写有注释,可左右移动查看。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name <> Sheet1.Name Then Exit Sub '如果当前工作表不是sheet1,退出程序 For Each ce In Target n = n + 1 If n > 1 Then Exit Sub '如果选择区域大于1个单元格 则退出程序 Next ce Dim rng As Range Set rng = Sh.UsedRange '工作表已使用区域赋给rng
If Target <> '' Then '目标单元格不为空 If Not Application.Intersect(Target, rng) Is Nothing Then '与使用区域有交集才运行下面的代码 Dim c As Range' Set rng = Sh.UsedRange rng.Interior.ColorIndex = xlNone '使用区域设置为无色 For Each c In rng '循环使用区域里的单元格 If c.Value = Target.Value Then '比较其值 c.Interior.ColorIndex = 28 '设置单元格底色 c.Font.Color = RGB(0, 0, 0) '设置字体颜色 End If Next End If End IfEnd Sub

2 说说代码背后的含义

2.1

这一段代码,是防止用Ctrl+A全选工作表时(或其它选择很多单元格的情况),让Excel卡死。

    For Each ce In Target        n = n + 1        If n > 1 Then Exit Sub '如果选择区域大于1个单元格 则退出程序    Next ce

2.2

这一行代码,是清除之前的颜色,否则标记的单元格会越来越多。对于rng,其实不一定要设置Set rng = Sh.UsedRange这么大的范围,可以根据自己的需求把Sh.UsedRange改成几列或者几行的区域。

rng.Interior.ColorIndex = xlNone '使用区域设置为无色

2.3

这一行如果不要,代码就会在整个工作薄都生效。

    If Sh.Name <> Sheet1.Name Then Exit Sub '如果当前工作表不是sheet1,退出程序

好了,今天就说这么多。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
怎么在Excel汇总表中,删除标记颜色以外的表格(包括各明细表)?
range对象Resize属性
完全手册Excel VBA典型实例大全:通过368个例子掌握
VBA类模块入门
Range对象应用大全(3)—CurrentRegion属性详解
进阶之路:VBA进度更新
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服