Excel 宏插件实现聚光灯功能(高亮当前行列 高亮行列)自定义宏插件 自定义功能实现一键开启关闭聚光灯效果 将自己做的Excel宏和Excel函数做成加载项插入到Excel功能区

Excel宏插件实现聚光灯功能教程

Excel 亲自动手制作宏插件实现聚光灯功能 一键开启关闭聚光灯效果

将自己做的Excel宏和Excel函数做成加载项插入到Excel功能区。

效果展示

定制Excel加载项-聚光灯效果

图0:定制Excel加载项-聚光灯效果

聚光灯功能(俗称高亮行列,或者高亮当前行列)能够在我们选择单元格时,突出显示所在行和列,极大地提高数据处理和分析时的视觉效果与操作便利性。

WPS 的表格自带高亮行列功能,Excel 功能强大,却没有自带聚光灯功能,让人遗憾。为了弥补这个遗憾,特此利用宏插件在 Excel 中实现聚光灯效果,让高亮行列不再是 Excel 的短板。本文将详细介绍如何使用 Excel 的加载项实现 Excel 的聚光灯效果。

一、宏插件创建基础步骤-创建、激活、添加 Excel 加载项

(一)新建工作表

首先,打开 Excel 软件并新建一个工作表。在开发者工具中,打开 VB编辑器,在本工作薄的 VBAProject 插入新模块。如 图1 所示。
定制Excel加载项-创建宏

图1:定制Excel加载项-创建宏

(二)编写聚光灯代码(缺少一个关键函数,后文有附录代码)

在上述创建模块后,双击模块,在空白处,写入聚光灯函数。2.1 代码块 是聚光灯函数参考。
定制Excel加载项-写入高亮行列代码

图2:定制Excel加载项-写入高亮行列代码

(2.1)ToggleSpotlightUpdateSpotlight 代码块

注:此处缺少 AddOrUpdateSelectionChangeEvent 函数。后文会附录上该函数的全部代码,只需要将后文的代码块粘贴到本段代码最后的空白处,继续以下操作即可。

Dim isSpotlightOn As Boolean ' 用于记录聚光灯效果是否开启的布尔变量
Dim eventAddedDict As Object ' 用于记录每个工作表是否已添加 Worksheet_SelectionChange 事件
Dim prevRngDict As Object ' 用于记录每个工作表的上一次选中的单元格区域

' 确保在每次使用前初始化字典
Function GetEventAddedDict() As Object
    If eventAddedDict Is Nothing Then
        Set eventAddedDict = CreateObject("Scripting.Dictionary")
    End If
    Set GetEventAddedDict = eventAddedDict
End Function

Function GetPrevRngDict() As Object
    If prevRngDict Is Nothing Then
        Set prevRngDict = CreateObject("Scripting.Dictionary")
    End If
    Set GetPrevRngDict = prevRngDict
End Function

' 获取当前工作表的唯一键(工作簿名称 + 工作表名称)
Function GetUniqueKey(ws As Worksheet) As String
    GetUniqueKey = ws.Parent.Name & "!" & ws.Name
End Function

Sub ToggleSpotlight()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ' 确保字典已初始化
    Dim dict As Object
    Set dict = GetEventAddedDict()
    Set prevDict = GetPrevRngDict()

    ' 获取当前工作表的唯一键
    Dim uniqueKey As String
    uniqueKey = GetUniqueKey(ws)

    ' 如果字典中没有当前工作表的记录,则初始化为 False
    If Not dict.Exists(uniqueKey) Then
        dict(uniqueKey) = False
    End If

    ' 如果是当前工作表首次启用聚光灯,则添加 Worksheet_SelectionChange 事件
    If Not isSpotlightOn And Not dict(uniqueKey) Then
        Call AddOrUpdateSelectionChangeEvent(ws)
        dict(uniqueKey) = True
    End If

    ' 切换聚光灯状态
    If isSpotlightOn Then
        isSpotlightOn = False
        Cells.Interior.ColorIndex = xlColorIndexNone ' 清除所有单元格已设置的填充颜色(可选,根据需求决定是否保留此行)
    Else
        isSpotlightOn = True
        ' 首次启用时,立即更新聚光灯
        Call UpdateSpotlight
    End If
End Sub

Sub UpdateSpotlight()
    If isSpotlightOn Then
        Dim ws As Worksheet
      
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值