将 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
我有一个代码可以在 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