VBA学习(18):VBA制作任意工作表均可使用的聚光灯

 在需要制作聚光的工作簿,按<ALT+F11>组合键,打开VBE编辑器。在右侧[工程资源管理器窗格]选中ThisWorkbook模块,将以下代码复制粘贴到该模块的代码窗口。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False
    Cells.Interior.ColorIndex = -4142 '取消单元格原有填充色,但不包含条件格式产生的颜色。
    Rows(Target.Row).Interior.ColorIndex = 33 '活动单元格整行填充颜色
    Columns(Target.Column).Interior.ColorIndex = 33 '活动单元格整列填充颜色
    Application.ScreenUpdating = True
End Sub

图片

最后关掉VBE窗口——聚光灯就制作完成了

此时选中该工作簿任意工作表的单元格,就会出现如上图动画所示的聚光灯效果。

上面的VBA代码使用了工作簿事件:

Workbook_SheetSelectionChange

如果你只是需要对某个工作表制作聚光灯,可以换用工作表事件,将以上代码修改为如下,并复制粘贴到相关工作表模块代码窗口即可。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    Cells.Interior.ColorIndex = -4142 '取消单元格原有填充色,但不包含条件格式产生的颜色。
    Rows(Target.Row).Interior.ColorIndex = 33 '活动单元格整行填充颜色
    Columns(Target.Column).Interior.ColorIndex = 33 '活动单元格整列填充颜色
    Application.ScreenUpdating = True
End Sub

……聚光灯很有用,比如查看行列明细繁多的数据表时,可以提高数据阅读清晰度和数据输入的准确度;但需要说明的是,一旦使用VBA代码,Excel将会丧失“后悔”功能,也就是说Ctrl+Z的撤销功能会失去效果了;另外,它还会影响Excel的反应效率。

除此之外,该代码还会取消单元格原有设置的填充色,不过不会取消【条件格式】以及【表】功能设置的单元格填充色……

当然,代码还有很多优化空间,比如,调整聚光灯的范围,仅限数据区域,参考代码如下▼

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim rng As Range, cll As Range
    Set rng = ActiveSheet.UsedRange
    rng.Interior.ColorIndex = 0
    Set cll = Intersect(rng, Rows(Target.Row))
    Set cll = Union(cll, Intersect(rng, Columns(Target.Column)))
    cll.Interior.ColorIndex = 33
    Application.ScreenUpdating = True
End Sub

技术交流,软件开发,欢迎微信沟通:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xwLink1996

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值