代码之家  ›  专栏  ›  技术社区  ›  Amir

将工作表\u更改代码应用于原始选择

  •  0
  • Amir  · 技术社区  · 7 年前

    我有一个代码,每当所选单元格被编辑或其内容被删除时,都会向其添加注释(类似于“2018年1月19日下午3:00编辑/删除”)。由于注释被添加到新的选择中(单元格下方),我禁用了返回键,使其无法向下移动选择。但是,如果编辑单元格并按任意方向键或制表符,甚至用光标选择任何其他单元格,注释将添加到其中。

    有没有办法将其限制在修改过的原始单元格中?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Brandon Barney    7 年前

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

    例如 Target.Offset(1, 0).Value = "Foo" 将“Foo”从更改的单元格向下放置一行 Target.Offset(0, 1).Value = "Bar" 将“Bar”列置于右侧。

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

        2
  •  1
  •   Xabier    7 年前

    类似以下的操作应该可以做到这一点:

    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