excel中锁定单元格后,怎么才能在任何一个位置插入一行,都能自动复制上一行的公式?

Private Sub Worksheet_Change(ByVal Target As Range)
a = Target.Row()
b = Target.Column()
Application.ScreenUpdating = False
If a <> 1 Then
If Cells(a, b) = "" And Cells(a - 1, b) <> "" Then
For x = 1 To 256
If Cells(a - 1, x).HasFormula = True Then
Cells(a - 1, x).Copy
Cells(a, x).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next x
Cells(a, b).Select
End If
End If
Application.ScreenUpdating = True
End Sub
我复制别人个VBA程序,执行时老是显示编译错误,缺少end sub,请帮我看下是为什么

网友推荐的徐小晕的答案运行时出现错误。我不懂如何编写VBA代码,但百度之后发现如下宏代码很管用,你可以试试:
Sub AddRow()
Application.ScreenUpdating = False
ActiveSheet.Unprotect "123" '设密码为123
Dim k%
k = ActiveCell.Row
Rows(k).Insert ' 在当前单元格插入空行
Cells(k, 7).FillDown ' 复制G列的公式
Cells(k, 8).FillDown ' 复制H列的公式
Cells(k, 14).FillDown ' 复制N列的公式
Cells(k, 18).FillDown ' 复制R列的公式
ActiveSheet.Protect "123"
Application.ScreenUpdating = True
End Sub

如果想删除一行,可以运行如下宏:
Sub DelRow()
Application.ScreenUpdating = False
ActiveSheet.Unprotect "123" '设密码为123
Dim k%
k = ActiveCell.Row
Rows(k).Delete ' 在当前单元格删除空行
ActiveSheet.Protect "123"
Application.ScreenUpdating = True
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-26
Sub 小晕()
k = InputBox("请问您需要在第几行下面插入")
Rows(k).Select
Selection.Copy
Rows(k + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub本回答被提问者采纳
第2个回答  2012-08-30
第3个回答  2012-02-20
在EXCEL2003上执行没问题呀追问

能把你编辑的全部的包括标识行,包括最后的那一行,全复制给我看看吗?我的错误提示老显示是第一行sub ()那一行错误

追答

我试了试,除了公式里不能有函数外没什么问题,我不清楚你遇到的问题.

本回答被网友采纳
相似回答