在不使用VBA的情况下突出显示Excel中的活动行/列?

low*_*wak 29 excel vba highlight

我想要实现的是突出显示活动的行或列.我使用了VBA解决方案,但每次使用Selection_change事件时,我都没有机会撤消工作表中的任何更改.

有没有办法以某种方式突出显示活动行/列而不使用VBA?

hst*_*tay 31

你可以得到的最好的是使用条件格式.

创建两个基于公式的规则:

  1. =ROW()=CELL("row")
  2. =COLUMN()=CELL("col")

如图所示:

在此输入图像描述

唯一的缺点是,每次选择单元格时,都需要重新计算工作表.(你可以按"F9")


e.J*_*mes 17

我不认为可以在不使用VBA的情况下完成,但可以在不丢失撤消历史记录的情况下完成:

在VBA中,将以下内容添加到工作表对象中:

Public SelectedRow as Integer
Public SelectedCol as Integer

Private Sub Worksheet_SelectionChange(ByVal Target as Range)
    SelectedRow = Target.Row
    SelectedCol = Target.Column
    Application.CalculateFull ''// this forces all formulas to update
End Sub
Run Code Online (Sandbox Code Playgroud)

创建一个新的VBA模块并添加以下内容:

Public function HighlightSelection(ByVal Target as Range) as Boolean
    HighlightSelection = (Target.Row = Sheet1.SelectedRow) Or _
        (Target.Column = Sheet1.SelectedCol)
End Function
Run Code Online (Sandbox Code Playgroud)

最后,使用条件格式根据"HighlightSelection"公式突出显示单元格:

条件格式规则的屏幕截图

  • 根据[hstay的答案](http://stackoverflow.com/a/22350417/33686),您可以通过删除全局变量和HighlightSelection函数来简化此操作.您需要保留的只是事件处理程序中的Application.CalculateFull (3认同)

Aar*_*ine 12

您可以按下暂时突出显示当前行(不更改选择)Shift+Space.当前列Ctrl+Space.

似乎可以在Excel,Google表格,OpenOffice Calc和Gnumeric(我尝试过的所有程序)中使用.(感谢https://productforums.google.com/forum/#!topic/docs/gJh1rLU9IRA指出这一点)

不幸的是,不如公式和基于宏的解决方案(这对我来说是BTW)那么好,因为移动光标时突出显示消失了,但它也不需要每次都设置它的麻烦,或者制作一个用它的模板(我无法开始工作).

此外,我发现您可以将条件格式公式(对于Excel)从其他解决方案简化为单个规则的单个公式:

=OR(CELL("col")=COLUMN(),CELL("row")=ROW())

权衡的是,如果你这样做,突出显示的列和行将必须使用相同的格式,但这对于大多数情况可能已经足够,并且工作量较少.(感谢https://trumpexcel.com/highlight-active-row-column-excel/缩写公式)


Nyb*_*bbe 6

首先谢谢!我刚刚创建了一个突出显示单元格的解决方案,使用Selection_Change并更改单元格内容.我不知道它会禁用撤消.我找到了一种方法,通过组合条件格式,Cell()和Selection_Change事件来实现.这就是我做到的.

  • 在Cell A1中我把公式= Cell("row")
  • 第2行完全是空的
  • 第3行包含标题
  • 第4行和第4行是数据
  • 要使A1中的公式更新,需要重新计算工作表.我可以用F9做到这一点,但我用唯一要执行的代码创建了Selection_Change事件Range("A1").Calculate.这样,每次用户移动时都会执行此操作,并且由于Selection_Change未更改工作表中的任何值/格式等,因此不会禁用撤消.
  • 现在只需输入条件格式以突出显示与单元格A1具有相同行的单元格.
    • 选择整个列B.
    • 条件格式,管理规则,新规则,使用公式确定要格式化的单元格
    • 输入以下公式:=行(B1)= $ A $ 1
    • 单击"格式",然后选择要突出显示的方式
    • 准备.在弹出窗口中按确定.

这适合我.