实例需求:工作表中的表格(ListObject)名称为Table1
,表格列数不确定,需要实现如下功能:
- 当用户完成最后一行最后一列输入之后(如果该单元格为空,则视为输入未完成),表格自动扩展一行
- 扩展行中,第一列填充自动序号,其他列填充NA
- 如果用户双击表格中最后一行的任意单元格,那么删除该行,并相应调整表格单元格范围
效果如下所示。
示例代码如下。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oTab As ListObject, oListRow As ListRow
Const TAB_NAME As String = "Table1"
If Target.CountLarge = 1 And Len(Target.Cells(1).Value) > 0 Then
Set oTab = Me.ListObjects(TAB_NAME)
With oTab
If Not Application.Intersect(.Range.Columns(.ListColumns.Count), Target) Is Nothing Then
If Target.Offset(1).ListObject Is Nothing Then
Set oListRow = .ListRows