在更改相邻单元格时,自动填充单元格中的date

我发现代码在Excel中工作,几乎做我需要的。

我需要的是在另一列的单元格中进行更改时,将今天的date自动添加到一列的单元格中。 所以,如果我点击M行20行的单元格并更改数据或添加数据(在这种情况下,它是一个带有下拉列表的状态列),那么在第N行20的单元格中它将把今天的date或将今天的datereplace成今天的date。 (每次状态下拉改变。)

这个代码为2个不同的列做了这个,因为我改变了它。

问题:

  1. 如果我插入行,它会把今天的date放在新插入的行中,或者如果我删除行,让我们说3行将添加date或覆盖3刚刚删除的3行以下的date。 不是很好。 我只想要添加一个date,如果我改变了单元格本身。 当我们添加或更改单元格中的状态(数据)到其左侧时,只需自动添加date。

  2. 此外,我需要排在前9行不受此自动date添加影响。

  3. 最后,如果我双击列M行20的单元格,但不input任何数据,然后单击该单元格,它仍将添加date列N行20的单元格。

我在下面find了原始代码: 当用户在相邻单元格中input信息时,自动填充单元格中的date

我的代码版本是:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim A As Range, M As Range, X As Range, Inte As Range, r As Range Set A = Range("M:M,X:X") Set Inte = Intersect(A, Target) If Inte Is Nothing Then Exit Sub Application.EnableEvents = False For Each r In Inte r.Offset(0, 1).Value = Date Next r Application.EnableEvents = True End Sub 

这些修改照顾你的前两个规格。

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("M:M,X:X"), Range("10:" & Rows.Count)) Is Nothing Then If Target.Count < Columns.Count Then On Error GoTo bm_Safe_Exit Application.EnableEvents = False Dim r As Range For Each r In Intersect(Target, Range("M:M,X:X"), Range("10:" & Rows.Count)) With r.Offset(0, 1) .Value = Now 'use Now to retain the time as well as the date .NumberFormat = "dd-mmm-yyyy hh:mm:ss" 'change to what you prefer End With Next r End If End If bm_Safe_Exit: Application.EnableEvents = True End Sub 

至于第三,我会虚心地build议你习惯使用轻敲Esc放弃“单元格内”编辑而不是Enter键或select另一个单元格的首选方法。 使用Esc不会更改单元格中的值,并且不会触发Worksheet_Change事件macros。 使用Enter或者select另外一个单元格可以改变单元格中的值,并且针对缺乏实际操作的编码根本不值得在适当的键盘操作时使用。

附录:

如果您的手仍然在鼠标上,也可以单击公式栏中的×来按[Esc]进行内嵌编辑。

在细胞 -  edit_escape