Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 高亮显示所选单元格对应的行/列的最快方式_Excel_Vba - Fatal编程技术网

Excel 高亮显示所选单元格对应的行/列的最快方式

Excel 高亮显示所选单元格对应的行/列的最快方式,excel,vba,Excel,Vba,我正在处理一个大型excel工作表(482行x 654列),其中计算了大量公式,我需要找到最有效的方法来突出显示与所选行对应的行/列 我尝试了两种方法: 使用公式设置条件格式: 等等 Worksheet_SelectionChange(ByVal target As Range) target.Calculate 删除以前的格式并添加引用选定单元格的新格式的宏 这两种解决方案都会在选择更改时触发,并通过ALLOCT减慢工作表的使用。 我甚至尝试将延迟设置为1秒或2秒,以便仅运行用户执行的最后一

我正在处理一个大型excel工作表(482行x 654列),其中计算了大量公式,我需要找到最有效的方法来突出显示与所选行对应的行/列

我尝试了两种方法:

  • 使用公式设置条件格式:
  • 等等

    Worksheet_SelectionChange(ByVal target As Range)
    target.Calculate
    
  • 删除以前的格式并添加引用选定单元格的新格式的宏
  • 这两种解决方案都会在选择更改时触发,并通过ALLOCT减慢工作表的使用。 我甚至尝试将延迟设置为1秒或2秒,以便仅运行用户执行的最后一个操作,如果操作2在该时间范围内发生,则取消操作1的事件

    在这种情况下,有没有人对我有什么高深的见解,比如不同的触发器,或者Excel中的隐藏设置,可以比默认情况下Excel更清晰地突出显示当前行/列?

    类似的内容

    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