使用 VBA 向 Excel table 添加行而不启用总计行
Adding a row to an Excel table using VBA without enabling total row
我有一个 table(称为 PortDistances
)显示端口对之间的距离。我已将它设置为不显示总计行,因为它与其中的数据根本不相关。
我还有一个用户窗体要在 table 的末尾添加一行数据,使用此代码:
Private Sub AddOne_OK_Click()
Dim lrow As Long
lrow = Worksheets("Port distances").Cells(Rows.Count, 1).End(xlUp).Row
' Add new port pair distance
Worksheets("Port distances").Cells(lrow + 1, 1).Formula = "=" & Worksheets("Port distances").Cells(lrow + 1, 2).Address(False, False) & "&" & Worksheets("Port distances").Cells(lrow + 1, 3).Address(False, False) ' Extend formulas
Worksheets("Port distances").Cells(lrow + 1, 6).Formula = "=" & Worksheets("Port distances").Cells(lrow + 1, 1).Address(False, False) & "&" & Worksheets("Port distances").Cells(lrow + 1, 4).Address(False, False) ' Extend formulas
Worksheets("Port distances").Cells(lrow + 1, 2).Value = strFrom ' POL
Worksheets("Port distances").Cells(lrow + 1, 3).Value = strTo ' POD
Worksheets("Port distances").Cells(lrow + 1, 4).Value = Val(Box_DistNew.Value) ' Distance
Worksheets("Port distances").Cells(lrow + 1, 5).Value = "Schedule App" ' Source
Unload Me
End Sub
烦人的是,每次我 运行 它时,添加的行都会变成总计行,通常会问我是否要覆盖现有的总计行公式(再次记住,是没有开始的总计行)。
我尝试添加 Worksheets("Port distances").ListObjects("PortDistances").ShowTotals = False
以将其恢复为正常行,但这只会擦除该行。另一方面,手动清除 "Totals row" 复选框只会将其变成普通线。
为什么会把它当作总计行,如何停止?
您可以使用 Worksheets("Port distances").ListObjects("PortDistances").Listrows.add
添加新行,然后填充它。例如:
Dim lo As ListObject
Dim lr As ListRow
Dim n As Long
Set lo = Worksheets("Port distances").ListObjects("PortDistances")
Set lr = lo.ListRows.Add
For n = 1 To lo.ListColumns.Count
lr.Range(1, n).Value = "item " & n
Next n
我有一个 table(称为 PortDistances
)显示端口对之间的距离。我已将它设置为不显示总计行,因为它与其中的数据根本不相关。
我还有一个用户窗体要在 table 的末尾添加一行数据,使用此代码:
Private Sub AddOne_OK_Click()
Dim lrow As Long
lrow = Worksheets("Port distances").Cells(Rows.Count, 1).End(xlUp).Row
' Add new port pair distance
Worksheets("Port distances").Cells(lrow + 1, 1).Formula = "=" & Worksheets("Port distances").Cells(lrow + 1, 2).Address(False, False) & "&" & Worksheets("Port distances").Cells(lrow + 1, 3).Address(False, False) ' Extend formulas
Worksheets("Port distances").Cells(lrow + 1, 6).Formula = "=" & Worksheets("Port distances").Cells(lrow + 1, 1).Address(False, False) & "&" & Worksheets("Port distances").Cells(lrow + 1, 4).Address(False, False) ' Extend formulas
Worksheets("Port distances").Cells(lrow + 1, 2).Value = strFrom ' POL
Worksheets("Port distances").Cells(lrow + 1, 3).Value = strTo ' POD
Worksheets("Port distances").Cells(lrow + 1, 4).Value = Val(Box_DistNew.Value) ' Distance
Worksheets("Port distances").Cells(lrow + 1, 5).Value = "Schedule App" ' Source
Unload Me
End Sub
烦人的是,每次我 运行 它时,添加的行都会变成总计行,通常会问我是否要覆盖现有的总计行公式(再次记住,是没有开始的总计行)。
我尝试添加 Worksheets("Port distances").ListObjects("PortDistances").ShowTotals = False
以将其恢复为正常行,但这只会擦除该行。另一方面,手动清除 "Totals row" 复选框只会将其变成普通线。
为什么会把它当作总计行,如何停止?
您可以使用 Worksheets("Port distances").ListObjects("PortDistances").Listrows.add
添加新行,然后填充它。例如:
Dim lo As ListObject
Dim lr As ListRow
Dim n As Long
Set lo = Worksheets("Port distances").ListObjects("PortDistances")
Set lr = lo.ListRows.Add
For n = 1 To lo.ListColumns.Count
lr.Range(1, n).Value = "item " & n
Next n