low*_*wak 29 excel vba highlight
我想要实现的是突出显示活动的行或列.我使用了VBA解决方案,但每次使用Selection_change
事件时,我都没有机会撤消工作表中的任何更改.
有没有办法以某种方式突出显示活动行/列而不使用VBA?
hst*_*tay 31
你可以得到的最好的是使用条件格式.
创建两个基于公式的规则:
=ROW()=CELL("row")
=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"公式突出显示单元格:
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/缩写公式)
首先谢谢!我刚刚创建了一个突出显示单元格的解决方案,使用Selection_Change并更改单元格内容.我不知道它会禁用撤消.我找到了一种方法,通过组合条件格式,Cell()和Selection_Change事件来实现.这就是我做到的.
Range("A1").Calculate
.这样,每次用户移动时都会执行此操作,并且由于Selection_Change未更改工作表中的任何值/格式等,因此不会禁用撤消.这适合我.