数据表新行中字段的默认值

在Excel中有数据表时,部分标准function是在最后一个单元格中按下制表符在表格底部添加一个新行。 我想用有用的默认值自动填充新行。 特别是我想把当前date时间放在一个单元格中,并将值复制到表格上一行的其他单元格中。

使用公式来做这件事是不可行的 – 例如,对于date时间戳,使用=now()是不够的,因为每次电子表格重新计算时它都会自动更新,而我希望它保留date时间当行被添加的时刻。

所以我试图写VBA被添加的行事件触发,并在该代码写入到新行的单元格的值。 从MS文档,我认为DataTable.TableNewRow将是适当的事件。 但是当我尝试为该事件编写任何代码时,它不会被执行。 当我在VBA对象浏览器中查找DataTableTableNewRow事件未被列出。

版本:

  • VBA for Applications 7.1
  • Excel 2013

所以我的问题:

  1. 我的思维方向是正确的,还是你可以build议一个更好的方法?
  2. 你能提供任何这样的工作代码吗?
  3. DataTable.TableNewRow事件我应该与?
  4. 我需要做什么才能在VBA代码中访问该事件?

你可以试试这个:

Thisworkbook中写下这段代码。

 Private Sub Workbook_Open() Set ref_tbl = Sheet1.ListObjects(1).DataBodyRange End Sub 

然后在Worsksheet Object下面的代码。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo halt Application.EnableEvents = False Dim tbl_rng As Range Set tbl_rng = Me.ListObjects(1).DataBodyRange If Not Intersect(Target, tbl_rng) Is Nothing Then If tbl_rng.Rows.Count > ref_tbl.Rows.Count Then MsgBox "Table increase in size" '~~> Do your stuff here Set ref_tbl = tbl_rng End If End If forward: Application.EnableEvents = True Exit Sub halt: MsgBox Err.Number & ": " & Err.Description Resume forward End Sub 

您还需要一个模块来声明公共variables

 Public ref_tbl As Range 

所以基本上,这会告诉你什么时候你的桌子增大了。
如果我们能够捕捉到这一点,那么当条件满足时,你可以做你的东西。
这适用于你在你的问题中描述的情况。
当您在表格中的条目之间插入行时,它将不起作用。 反正,HTH。