Excel:当同一工作表中有两个表(垂直)时,将新行添加到表底部

时间:2018-12-31 15:42:54

标签: excel vba excel-vba excel-formula

我有一个问题,可能很容易让您解决。

我有两个表:Table1和Table2。这两个表都在同一工作表中,称为“预算”。

我想添加一个命令按钮/一个加号按钮,使用户可以在每个表的底部添加新行。

但是,在通过宏记录功能进行了尝试之后,我认识到,在向Table1添加了几行新记录之后,Table2的新行被添加到了中间的某个位置。

有人可以给我提供代码,以解决此问题并进行自动调整吗?

我一生中从未编码过任何东西。

提前感谢您的帮助!

记录器的代码:

Sub NEWROW() 
' 
' NEWROW Makro 
' 
' 
Range("B12:C12").Select 
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
End Sub

1 个答案:

答案 0 :(得分:1)

尝试此代码

Option Explicit

Sub AddRows()
    Dim wks As Worksheet
    Dim tbl1 As ListObject
    Dim tbl2 As ListObject


    Set wks = ActiveSheet

    Set tbl1 = wks.ListObjects("Table1")
    Set tbl2 = wks.ListObjects("Table2")

    tbl1.ListRows.Add
    tbl2.ListRows.Add

End Sub

表对象说明here

更新好吧,对于一个绝对的初学者来说,这可能是最简单的方法。

Sub AddRowTbl1()
    Dim wks As Worksheet
    Dim tbl As ListObject
    Set wks = ActiveSheet

    Set tbl = wks.ListObjects("Table1")
    tbl.ListRows.Add

End Sub

Sub AddRowTbl2()
    Dim wks As Worksheet
    Dim tbl As ListObject

    Set wks = ActiveSheet

    Set tbl = wks.ListObjects("Table2")

    tbl.ListRows.Add
End Sub

PS 更高级的用户将使用功能

Function tblAddRow(tblname As String, wks As Worksheet)

Dim tbl As ListObject

    On Error GoTo EH

    Set tbl = wks.ListObjects(tblname)
    tbl.ListRows.Add

EH:

End Function

Sub Test_tblAdd()
    tblAddRow "Table1", ActiveSheet
End Sub