2

一点上下文:

我最近发现,下面的公式返回当前选中的单元格的地址(或者如果选中了一个范围,则返回该范围内最左上角的单元格的地址):

= CELL("address")

起初,我认为这个公式对条件格式很有用,因为它可以用作条件的一部分,仅对选定的单元格进行格式化(例如,条件格式规则可能类似于= CELL("address")=ADDRESS(ROW(),COLUMN())),但我面临一个障碍.

该公式是 volatile 的,但 volatile 函数仅在以下情况下更新:

  1. 工作表中的一个单元格被更改

  2. F9在键盘上按下

话虽如此,我的问题是:有没有办法让一个单元格在通过鼠标单击选择不同的单元格时自动重新计算?即使是易失性单元格也不会从这种情况下更新,因为选择不同的单元格本身不会导致单元格中的任何数据发生变化。

当然,它可以通过F9在选择不同的单元格后按手动更新,但我想知道是否有办法自动执行此操作。

4

2 回答 2

2

您可以在 VBA 中使用 Worksheet_SelectionChange() 事件。

打开您的 VBE (Alt+F11),在 VBAProject 窗格(左上角)中找到您的工作簿,然后双击您的工作表。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Force this cell to recalculate any time any cell is selected/highlighted
    Range("A1").Calculate
End Sub

现在,任何时候在工作表单元格 A1 上移动都会重新计算。

于 2018-02-08T19:57:26.427 回答
1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Range("A1:D4"), Target) Is Nothing Then
    Range("A1:D4").Interior.Color = xlNone
    Target.Interior.ColorIndex = 6
End If
End Sub

现在,仅当所选单元格位于 A1:D4 中时,才会突出显示所选单元格

于 2018-02-08T20:27:24.120 回答