Excel 高亮显示所选单元格对应的行/列的最快方式
我正在处理一个大型excel工作表(482行x 654列),其中计算了大量公式,我需要找到最有效的方法来突出显示与所选行对应的行/列 我尝试了两种方法:Excel 高亮显示所选单元格对应的行/列的最快方式,excel,vba,Excel,Vba,我正在处理一个大型excel工作表(482行x 654列),其中计算了大量公式,我需要找到最有效的方法来突出显示与所选行对应的行/列 我尝试了两种方法: 使用公式设置条件格式: 等等 Worksheet_SelectionChange(ByVal target As Range) target.Calculate 删除以前的格式并添加引用选定单元格的新格式的宏 这两种解决方案都会在选择更改时触发,并通过ALLOCT减慢工作表的使用。 我甚至尝试将延迟设置为1秒或2秒,以便仅运行用户执行的最后一
Worksheet_SelectionChange(ByVal target As Range)
target.Calculate
Public lngRow As Long
Public lngCol As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.Color = XlColorIndex.xlColorIndexNone
If lngCol = 0 Or lngRow = 0 Then
lngCol = Target.Column
lngRow = Target.Row
FormatRow
FormatCol
Else
If lngCol <> Target.Column Then
lngCol = Target.Column
FormatCol
End If
If lngRow <> Target.Row Then
lngRow = Target.Row
FormatRow
End If
End If
End Sub
Function FormatRow()
Dim r As Excel.Range
Set r = Rows(lngRow)
r.Interior.Color = RGB(230, 230, 230)
End Function
Function FormatCol()
Dim r As Excel.Range
Set r = Columns(lngCol)
r.Interior.Color = RGB(230, 230, 230)
End Function
Public lngRow尽可能长
公共lngCol,只要
专用子工作表\u选择更改(ByVal目标作为范围)
Cells.Interior.Color=XlColorIndex.xlColorIndexNone
如果lngCol=0或lngRow=0,则
lngCol=Target.Column
lngRow=Target.Row
FormatRow
FormatCol
其他的
如果lngCol Target.列,则
lngCol=Target.Column
FormatCol
如果结束
如果LNROW Target.行,则
lngRow=Target.Row
FormatRow
如果结束
如果结束
端接头
函数FormatRow()
将r设置为Excel.Range
设置r=行(lngRow)
r、 内饰颜色=RGB(230、230、230)
端函数
函数FormatCol()
将r设置为Excel.Range
设置r=列(lngCol)
r、 内饰颜色=RGB(230、230、230)
端函数
工作表\u selection change
使用target.column
和target.row
,如果选择不同,则重置选择,甚至检查列不同和格式,并检查行不同和格式是否为Excel。范围应在模块声明级别或每个FormmatXXX()
函数内移动(实际上应该是Sub
s)@DisplayName谢谢,范围最初是从初始函数开始设置的。最近,我将Sub编码为没有返回的函数,我相信这不会产生不良影响,并允许我更轻松地做事情,比如从调试/测试中的函数返回。
Public lngRow As Long
Public lngCol As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.Color = XlColorIndex.xlColorIndexNone
If lngCol = 0 Or lngRow = 0 Then
lngCol = Target.Column
lngRow = Target.Row
FormatRow
FormatCol
Else
If lngCol <> Target.Column Then
lngCol = Target.Column
FormatCol
End If
If lngRow <> Target.Row Then
lngRow = Target.Row
FormatRow
End If
End If
End Sub
Function FormatRow()
Dim r As Excel.Range
Set r = Rows(lngRow)
r.Interior.Color = RGB(230, 230, 230)
End Function
Function FormatCol()
Dim r As Excel.Range
Set r = Columns(lngCol)
r.Interior.Color = RGB(230, 230, 230)
End Function