在Excel中使用Hightlight活动行/列而不使用VBA?
我想要实现的是突出显示活动的行或列。 我使用了VBA解决scheme,但是每次使用Selection_change
事件时,我都没有机会撤销工作表中的任何更改。
有没有办法以某种方式高亮活动行/列而不使用VBA?
我不认为不使用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
创build一个新的VBA模块并添加以下内容:
Public function HighlightSelection(ByVal Target as Range) as Boolean HighlightSelection = (Target.Row = Sheet1.SelectedRow) Or _ (Target.Column = Sheet1.SelectedCol) End Function
最后,使用条件格式来突出基于“HighlightSelection”公式的单元格:
你可以得到最好的是使用条件格式。
创build两个基于公式的规则:
-
=ROW()=CELL("row")
-
=COLUMN()=CELL("col")
如下所示:
唯一的缺点是,每次你select一个单元格,你都需要重新计算你的工作表。 (你可以按“F9”)
首先谢谢! 我刚刚创build了一个突出显示单元格的解决scheme,使用Selection_Change和更改单元格内容。 我不知道这将禁用撤消。 我find了一种方法,通过使用组合条件格式,Cell()和Selection_Change事件。 我就是这么做的
- 在单元格A1中,我把公式= Cell(“row”)
- 第2行是完全空的
- 第3行包含标题
- 第4行和第4行是数据
- 为了使A1中的公式更新,工作表需要重新计算。 我可以用F9做到这一点,但是我创build了Selection_Change事件 ,唯一要执行的代码是
Range("A1").Calculate
。 这样,每当用户四处移动时就完成了,由于Selection_Change不改变工作表中的任何值/格式等,所以Undo不会被禁用。 - 现在只需input条件格式来突出显示与单元格A1具有相同行的单元格。
- select整个B列
- 条件格式,pipe理规则,新规则,使用公式来确定要格式化的单元格
- input这个公式: =行(B1)= $ A $ 1
- 点击“格式”,然后select要如何突出显示
- 准备。 在popup窗口中按OK。
这对我有用。
您可以通过按Shift+Space
暂时突出显示当前行(不更改select)。 当前列与Ctrl+Space
。
似乎可以在Excel,Google表格,OpenOffice Calc和Gnumeric(我尝试过的所有程序)中工作。 (感谢https://productforums.google.com/forum/#!topic/docs/gJh1rLU9IRA指出这一点)
不幸的是,这并不像公式和基于macros的解决scheme那样好(因为这个解决scheme对我来说很顺利),因为突出显示在移动光标时会消失,但是也不需要每次设置它的麻烦,模板(我无法工作)。
此外,我发现你可以简化从其他解决scheme的条件格式公式(对于Excel)为单个规则的单一公式:
=OR(CELL(“col”)=COLUMN(),CELL(“row”)=ROW())
换句话说,如果你这样做,突出显示的列和行将不得不使用相同的格式,但这可能绰绰有余,对于大多数情况下,是较less的工作。 (感谢https://trumpexcel.com/highlight-active-row-column-excel/的缩写公式)
使用条件格式化,而不是突出显示整个行和列,可以使用以下代码突出显示单元格左边的单元格和单元格上方的列:
=OR(AND(CELL("col")=COLUMN();(CELL("row")-1)>=ROW());AND(CELL("col")>=COLUMN();(CELL("row")-1)=ROW()))