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
        Set ws
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值