【问题标题】:Insert tablerow and paste formula in it插入表格并在其中粘贴公式
【发布时间】:2015-02-27 17:05:01
【问题描述】:

我有一个受保护的 Excel 工作表,其中包含一个表格。
用户可以向表中添加数据以及插入和删除行。

我有工作 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

【问题讨论】:

  • 您使用的是什么版本的 Excel?我刚刚在 2010 年对其进行了测试,您的代码行对我来说效果很好。
  • 它是 www.worksheet.nl

标签: excel vba copy cell


【解决方案1】:

试试这样的?

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 等......)如果它有效,请告诉我!

【讨论】:

  • Change ListRows(1) 到 ListRows(?) 如果您从其他单元格复制公式,您希望它是任何数字。如果您只想复制特定单元格(一列),请将其更改为 ActiveSheet.ListObjects("Table1").ListRows(1).Range.Cells(x,x).Select
  • 谢谢。它真的很接近我想要的!确切地说,我想在新行中向下复制一列(J 列或 j23 单元格)。我也是新手,所以我无法用你的最后一个命令行修复宏:ActiveSheet.ListObjects("Tabel2").ListRows(1).Range.Cells("J23").Select ??
猜你喜欢
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多