插入表格行并在其中粘贴公式
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 等...)如果它有效,请告诉我!
我有一个受保护的 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 等...)如果它有效,请告诉我!