在需要制作聚光的工作簿,按<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