插入表格行并在其中粘贴公式

Insert tablerow and paste formula in it

我有一个受保护的 Excel sheet,里面有一个 table。
用户可以向 table 添加数据并插入和删除行。

我正在 VBA 插入(和删除)一行,但它不会从上面的单元格(本例 J24)复制公式。

截图:

(来源:mobadvies.nl

VBA是:

Private Sub CommandButton1_Click() 
    ActiveSheet.Unprotect Password:="password"
    ActiveSheet.ListObjects("Tabel2").ListRows.Add AlwaysInsert:=True
    ActiveSheet.Protect Password:="password" 
End Sub

Private Sub CommandButton2_Click() 
    ActiveSheet.Unprotect Password:="password"
    ActiveSheet.ListObjects("Tabel2").ListRows(ActiveSheet.ListObjects("Tabel2").ListRows.Count).Delete
    ActiveSheet.Protect Password:="password" 
End Sub

试试这样的东西?

Private Sub CommandButton21_Click()
ActiveSheet.Unprotect Password:="password"
Dim NewRow As ListRow
Set NewRow = ActiveSheet.ListObjects("Table1").ListRows.Add(AlwaysInsert:=True)
ActiveSheet.ListObjects("Table1").ListRows(1).Range.Select
Selection.Copy
NewRow.Range.Cells(1, 1).Select
ActiveSheet.Paste
ActiveSheet.Protect Password:="password"
End Sub

Private Sub CommandButton22_Click()
ActiveSheet.Unprotect Password:="password"
ActiveSheet.ListObjects("Table1").ListRows(ActiveSheet.ListObjects("Table1").ListRows.Count).Delete
ActiveSheet.Protect Password:="password"
End Sub

本质上,它将公式从第一行复制到新创建的行中。我是 VBA 的新手,所以不确定这是执行此操作的最佳方法还是您正在寻找的方法。希望这对您有所帮助!

编辑:

Private Sub CommandButton21_Click()
ActiveSheet.Unprotect Password:="password"
Dim NewRow As ListRow
Set NewRow = ActiveSheet.ListObjects("Table2").ListRows.Add(AlwaysInsert:=True)
ActiveSheet.ListObjects("Table2").ListRows(1).Range.Cells(10).Select
Selection.Copy
NewRow.Range.Cells(10).Select
ActiveSheet.Paste
ActiveSheet.Protect Password:="password"
End Sub

那就这样试试吧。这将复制第一行,单元格 10(在您的情况下为 J 23)并将其向下复制到最新的行单元格 10(J24、J25 等...)如果它有效,请告诉我!