Excel VBA将公式/date添加到工作表的最后一行数据input

我有一个数据范围,我想追加的date,当用户input数据在最后一行只有一列。 因此,如果有4行数据,并且用户在第五行的有效列(B:L)之一中input了任何内容,则date将被添加到“M”行以标记date。

有没有办法轻松做到这一点? 我可以想到一个简单的方法来添加一个sub ,基本上说,如果在任何列B:L – >添加date数据,但我不得不每次用户更改表或添加信息时调用此。

我可能只是在每行中input一个公式,但是当任何内容被覆盖或扩展时,我仍然必须更新它。 只是想知道如果有人知道一个快速的解决scheme。

编辑:

其实使用,

 Sub Worksheet_Change(ByVal Target As Range) Dim lastRow As Long lastRow = GetLastRow(Sheets("MySheet")) If lastRow = 1 Then Exit Sub If Not Intersect(Target, Target.Worksheet.Range("B" & CStr(lastRow) & ":L" & CStr(lastRow))) Is Nothing Then Sheets("MySheet").Range("M" & CStr(lastRow)).value = Date End If End Sub 

在修改表单时将修改最后一行input的内容。 所以,如果数据到了第6行,并且你在第9行input了一些东西,它将把最后一行检测为第9行。我已经确定这已经足够了,因为我将整理出空行,但是如果你想只要修改最后一行,就可以使用保留为全局variables的oldLastRow值。 然后检查是否只修改该值,如果是这样,运行你的代码,然后将oldLastRow更改为新的lastRow

如果我正确理解您的问题,那么您要查找的是当前工作表的Worksheet_Change事件以及filter,以确保更新了特定范围。

要做到这一点,在VBA编辑器中,转到您想要的function表,然后双击它,然后input以下代码:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not (Intersect(Target, ActiveSheet.Range("B:L")) Is Nothing) Then ActiveSheet.Range("M" & Target.Row).Value = Now() End If End Sub 

这基本上是说,如果从B列到L列有任何改变,那么将当前时间放入列M.

希望这个窍门!


更新:

考虑到评论中所述的最后一行:

 Private Sub Worksheet_Change(ByVal Target As Range) Dim LastRow As Long LastRow = ActiveSheet.UsedRange.Rows.Count If Not (Intersect(Target, ActiveSheet.Range("B" & LastRow & ":L" & LastRow)) Is Nothing) Then ActiveSheet.Range("M" & LastRow).Value = Now() End If End Sub