将worksheet_change代码应用于原始选择

时间:2018-01-19 12:45:29

标签: excel vba excel-vba comments

我有一个代码,可以在编辑所选单元格或删除其内容时为所选单元格添加注释(例如"在1/19/18下午3:00编辑/删除")。我通过向下移动选择来禁用返回键,因为注释被添加到新选择中(在单元格下方)。但是,如果您编辑单元格并按下任何方向键或选项卡,或者甚至用光标选择任何其他单元格,则会在那里添加注释。

有没有办法将其限制为修改后的原始单元格?

2 个答案:

答案 0 :(得分:1)

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

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

请务必在过程顶部添加Application.EnableEvents = False,在底部添加Application.EnableEvents = True。这将阻止该过程再次激活代码(这可能会导致几乎无限循环,直到它用完列。

答案 1 :(得分:1)

以下内容应该这样做:

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