这段VBA代码的目的是在Excel工作表中实现一种“聚光灯”效果。
即当用户选择某个单元格时,自动高亮该单元格所在的整行和整列。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Cells.FormatConditions.Delete
If Target.Rows.Count <> Rows.Count And Target.Columns.Count <> Columns.Count Then
With Target.EntireRow.FormatConditions.Add(Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=1000000000")
.SetFirstPriority
With .Interior
.ColorIndex = 28
End With
.StopIfTrue = False
End With
With Target.EntireColumn.FormatConditions.Add(Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=1000000000")
.SetFirstPriority
With .Interior
.ColorIndex = 28
End With
.StopIfTrue = False
End With
End If
Target.FormatConditions.Delete
End Sub
1.删除所有现有格式条件:
Cells.FormatConditions.Delete:删除工作簿中所有单元格的格式条件。
2.检查选定区域:
If Target.Rows.Count <> Rows.Count And Target.Columns.Count <> Columns.Count Then
判断选定的区域是否不是整行或整列。
3.对选定的行应用格式条件:
With Target.EntireRow.FormatConditions.Add(...)
为选定行的所有单元格添加一个新的格式条件。
Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="=1000000000"
设置格式条件,当单元格的值不等于1000000000时应用。
.Interior.ColorIndex = 28:设置满足条件的单元格的背景色。
.StopIfTrue = False:设置当条件满足时,是否停止检查其他格式条件。
4.对选定的列应用格式条件:
与对行应用格式条件的步骤相同,
只是将Target.EntireRow替换为Target.EntireColumn。
5.删除选定区域的格式条件:
Target.FormatConditions.Delete
删除选定区域的所有格式条件。
教程:
1.打开Excel VBA编辑器:
在Excel中,按下Alt + F11打开VBA编辑器。
2.插入代码:
在VBA编辑器的左侧项目资源管理器中,找到你的工作簿,
右键点击“ThisWorkbook”,选择“插入” -> “模块”,
在打开的代码窗口中粘贴上述代码。
3.保存并测试:
保存你的工作簿为启用宏的工作簿格式(.xlsm或xls),
然后关闭VBA编辑器,回到Excel界面进行测试。
4.观察效果:
当你选择工作表中的任何单个单元格时,
你应该会看到该单元格所在的整行和整列被高亮显示(假设它们不包含值1000000000)。
通过以上步骤,你就可以在你的Excel工作簿中实现聚光灯效果了。
这种效果在查看和分析数据时非常有用,因为它可以帮助你更容易地跟踪你当前正在查看的数据。