ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8121|回复: 11

[分享] Excel表格实现聚光灯功能-VBA方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-30 22:03 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:Range对象
本帖最后由 yuezheng710 于 2017-10-30 22:05 编辑

        最近研究了下Excel表格针对单个单元格实现聚光灯的方法,这样在表中行列数据很多的时候,可以准确定位到对的单元格,效果如下图:
spotlight.gif
        网上找到很多方法,基本原理大都是使用“条件格式”中自定义公式,然后在sheet的change事件中加入Calculate进行易失性处理,但是该方法只适用于一个sheet,多一个sheet就要多一次设定,条件设置也比较麻烦。
       本文给出只需简单的几句VBA语句来实现“聚光灯”功能,并且适用于Workbook中的所有Sheet,具体方法如下:
  • Alt+F11组合键,调出VBE编译界面;
  • 点中“工程”栏中的“ThisWookbook”

ThisWorkbook.jpg

    3. 再按下图选择“Workbook”中的“SheetSelectionChange”事件
Workbook_SheetSelectionChange.jpg
    4. 此时代码编译窗口就会自动出现子过程:
  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  2. End Sub
复制代码

    在这两句中输入/复制如下代码:
  1. Dim v() As String, m As String
  2.    
  3. v = Split(Target.Address, ":")
  4. If UBound(v) - LBound(v) = 0 Then
  5.     v = Split(v(0), "[        DISCUZ_CODE_1        ]quot;)
  6.     m = v(1) & ":" & v(1) & "," & v(2) & ":" & v(2)
  7.     Range(m).Select
  8.     Target.Activate
  9. End If
复制代码

    5. 实际效果如下图:
spotlight_vba_code-total.jpg
    6. 至此,回到表格中愉快的操作吧
    7. 当然,操作结束后另存为启用宏的工作簿(xlsm)格式,即可将此VBA代码保存到工作簿中;
    8. 如果保存为xlsx格式,则不会保存此VBA代码,当然由于代码很简单,每次需要的时候操作复制下也很简单,依个人喜好自定。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-3-2 18:23 | 显示全部楼层
整体运行效果不错,就是选定单个单元格后 “+”没有显示了!一个以上可以!

TA的精华主题

TA的得分主题

发表于 2020-10-19 21:21 | 显示全部楼层
本帖最后由 wych12 于 2020-10-19 21:22 编辑

请教楼主,这个方法如何修改显示颜色和高亮所选单元格呢?希望完善!

TA的精华主题

TA的得分主题

发表于 2020-10-19 22:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-12-3 11:44 | 显示全部楼层
请问楼主,这个代码,如果是遇上合并的单元格。

当表头上是有一行合并单元格时,
那么会选中整个这个被合并的区域,这能怎么分开呢?

TA的精华主题

TA的得分主题

发表于 2020-12-3 18:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-12-3 19:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-12-3 21:04 | 显示全部楼层
wych12 发表于 2020-10-19 21:21
请教楼主,这个方法如何修改显示颜色和高亮所选单元格呢?希望完善!

添加 一句  Range(m).Interior.Color = vbGreen '可改成自己想要的颜色
问题是,失去焦点后如何恢复为原来的颜色

TA的精华主题

TA的得分主题

发表于 2021-2-3 12:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-1-2 19:01 | 显示全部楼层
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
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 01:24 , Processed in 0.054062 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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