vba 如何实现在插入新行后自动复制上一行某个单元格公式?

比如在第5-6行或8-9行或12-13行....之间插入新行,新行的J列要复制上一行J列的公式(不选择整行复制,是因为每个人在K-S列的合并单元格中都有公式,如果选择整行复制,在K-S列就会出现错误。)
补充:1.工作表中将有公式的单元格锁定并保护了,不能使用列表功能。2.请帮忙用VB解决。

Dim formula As Variant
Dim r As Integer
'先获取当前选择的行
r = Selection.Row
'取上一行J列的公式
formula = Range("J" & CStr(r - 1)).formula '必须在第二行以后插入
'插入一行
Selection.Insert Shift:=xlDown
'设置当前行的J行公式为上一行
Range("J" & CStr(r)).formula = formula追问

谢谢!不过不知问题出在哪里...另外,有没有办法同时解决公式单元格锁定并保护的方法?

追答

你得定义个过程啊
sub insertLine()
'把代码贴到这里
end sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-11

考虑用Change事件:

Private Sub Worksheet_Change(ByVal Target As Range)

If Cells(Target.Row, "J") <> "" Or Target.Row = 1 Then exit sub
Cells(Target.Row - 1, "J").Select
Selection.AutoFill Destination:=Range(Cells(Target.Row - 1, "J"), Cells(Target.Row, "J")), Type:=xlFillDefault
End Sub

第2个回答  2020-09-14
上行公式为什么变量不会变,就是比如J列是J3=K3+L3,新增行本来公式要为=J4=K4+L4,现在的代码只能新增的行还是K3+L3
相似回答