您的位置首页百科知识

如何在Excel下正确地做出“聚光灯”效果?

如何在Excel下正确地做出“聚光灯”效果?

的有关信息介绍如下:

如何在Excel下正确地做出“聚光灯”效果?

容我忍不住先赞一下这个提问,简直是教科书式的模板~想要的东西、做过的尝试与遇到的问题都一览无余。

目前另一个回答展示的代码应该也是可行的(未实际确认, @TuskAi 开启了禁止转载,复制不了代码)。看上去test()每次运行都会增加一条条件格式?如果是这样的话,执行次数多了会在区域内增加一堆相同的条件格式吧……

我这里也找到一个方法。先在「名称管理器」中添加一个名称,可以随便取,比如叫HighlightRange:

新建的时候此名称的「引用位置」是无所谓的,待会要把它覆盖掉。这个名称将用来保存选中单元格范围的行与列边界。用名称来迂回解决可以避免使用Calculate重算工作表,这样就不影响选中后复制粘贴了。

然后在工作表的VBA代码中填入:

这些代码是对Worksheet_SelectionChange,也就是“改变所选的单元格范围”进行响应。选中单元格范围时,将范围的最大/最小 行/列放进数组,赋值给刚才新建的名称。名称的名字在第3行Names()括号中。

接下来,在需要应用聚光灯效果的区域内添加条件格式「使用公式确定要设置格式的单元格」。公式使用=OR(AND(ROW(A1)>=INDEX(HighlightRange,1),ROW(A1)<=INDEX(HighlightRange,2)),AND(COLUMN(A1)>=INDEX(HighlightRange,3),COLUMN(A1)<=INDEX(HighlightRange,4))) ,再将「格式」设置成所需的聚光灯效果:

公式中可能需要修改的东西包括:

应用条件格式后,应该就可以达成所需的效果了:

实际测试的时候我遇到另一个问题,视图里的单元格条件格式有时候不会随着选中区域的改变而一起变化,看起来像是聚光灯残破了一样:

貌似是视角没有完全刷新导致的。将有误的单元格滚动到视角以外,或者切换别的工作表之类,都可以“刷新”这些单元格的显示,恢复正常。

这个问题可能不一定会出现,如果出现的话可以用以下办法来规避。

添加一个新的工作表,名字可以随便取,比如叫“dummy”。嫌它多余的话可以隐藏起来。

在刚才编写的VBA代码中,End Sub之前添加以下几行:

整体代码变成了

这样就会在dummy和实际使用的工作表之间来回切换一下,起到刷新视角的作用。如此便能让聚光灯正常工作。