将 worksheet_change 代码应用于原始选择

Applying worksheet_change code to original selection

我有一个代码可以在 selected 单元格被编辑或内容被删除时添加注释(类似于 "Edited/Deleted on 1/19/18 at 3:00PM")。我禁用了 return 键将 selection 向下移动,因为评论被添加到新的 selection(在单元格下方)。但是,如果您编辑单元格并按任意方向键或 Tab 键,甚至 select 任何其他带有光标的单元格,注释就会添加到那里。

有什么方法可以将其限制在修改后的原始单元格中吗?

正如 Vacip 所指出的,Target 为您提供了已更改的单元格,然后您可以使用它的 OffSet 参数将注释放在您需要的位置。

例如,Target.Offset(1, 0).Value = "Foo" 会将 "Foo" 放在已更改的单元格下方的一行中,而 Target.Offset(0, 1).Value = "Bar" 会将 "Bar" 放在右侧的一列中。

确保在程序顶部添加 Application.EnableEvents = False 并在底部添加 Application.EnableEvents = True。这将防止该过程再次激活代码(这可能会导致几乎无限循环,直到用完所有列。

像下面这样的事情应该做:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    'enable events to false to restrict the code to one row below and not an infinite loop
    Target.Offset(1, 0).Value = "Edited/Deleted on " & Now()
    'add the Edited/Deleted text and date and time
    Application.EnableEvents = True
    're-enable events after doing what you wanted.
End Sub