通过VBA复制公式时,防止Excel单元格受到保护

时间:2016-12-07 22:15:30

标签: excel vba excel-vba excel-2016

我使用VBA代码在Excel 2016工作表中插入新行,然后将公式从上一行复制到新行,这样我就不必手动插入它们。不幸的是,复制公式后,插入公式的单元格会受到保护。这带来的缺点是,如果我犯了错误,我就无法删除新行。这是我的代码。

Private Sub Worksheet_Change(ByVal Target As Range)

' Disable events to prevent that insertion of the row triggers a new Worksheet_Change
' event. Without this action the worksheet would be in an endles loop.
Application.EnableEvents = False

If Target.Column = 1 Then
    If Cells(Target.Row + 2, 1).Value = "end" Then
        Cells(Target.Row + 1, 1).EntireRow.Insert
    End If
End If

' Copy formulas
Cells(Target.Row - 1, 2).Copy (Cells(Target.Row, 2))
Cells(Target.Row - 1, 5).Copy (Cells(Target.Row, 5))
Cells(Target.Row - 1, 2).Unprotect
Cells(Target.Row - 2, 5).Unprotect


' Reactivate events so that the worksheet can react to user changes.
Application.EnableEvents = True

End Sub

正如您所看到的,我也试图取消对细胞的保护,但这并没有帮助。复制配方后,我该怎么做才能防止这些细胞受到保护?我现在试了几个小时,谷歌直到现在都没有回答我的问题。

感谢您的帮助!

0 个答案:

没有答案