Excel VBA-防止编辑时更改单元格

Excel VBA-防止编辑时更改单元格,excel,vba,Excel,Vba,我想阻止编辑单元格,因为我需要在其中保留公式。问题是,我想将另一个工作簿中的大范围值复制粘贴到我的工作表中,粘贴的目标范围包括一些不能更改的单元格。因此,一个简单的锁选项不起作用,因为这会阻止我一次性完成这个操作 我试着使用一个代码,在这个代码中,当单元格发生变化时,单元格会变回其预期的公式,然而,这会产生一个无限循环。请参见下面的简化示例: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target

我想阻止编辑单元格,因为我需要在其中保留公式。问题是,我想将另一个工作簿中的大范围值复制粘贴到我的工作表中,粘贴的目标范围包括一些不能更改的单元格。因此,一个简单的锁选项不起作用,因为这会阻止我一次性完成这个操作

我试着使用一个代码,在这个代码中,当单元格发生变化时,单元格会变回其预期的公式,然而,这会产生一个无限循环。请参见下面的简化示例:

Private Sub Worksheet_Change(ByVal Target As Range)


If Not Intersect(Target, Range("F28")) Is Nothing Then
    Range("F28").Formula = "=if(E28=0,0,G28/E28)"
End If

End Sub
非常感谢你的帮助,非常感谢

编辑:
从另一个工作簿传输的自动解决方案不起作用,因为我收到了各种格式和工作簿名称的文件。

您必须制作一个输入“常驻”公式的子文件。粘贴新值后,只需调用此子项。

如果您的问题是无限循环,则此问题的常见解决方案如下。您只需要关闭事件一段时间,然后再重新打开它们。您的代码可能如下所示:

Private Sub Worksheet_Change(ByVal Target As Range)
    'turns off events
    Application.EnableEvents = False
If Not Intersect(Target, Range("F28")) Is Nothing Then
    Range("F28").Formula = "=if(E28=0,0,G28/E28)"
End If
    'turns on events back
    Application.EnableEvents = True
End Sub

谢谢你的快速回复,马伦尼斯。我怎么打电话给另一个潜艇?你能用代码写下一个例子吗?那将不胜感激。我假设你将此代码添加到粘贴到的工作表中(而不是工作簿的标准模块中)。在Application.EnableEvents=False和Application.EnableEvents=True中包装If/EndIf,以避免无限循环。@chuff,对不起,我之前没有看到您的评论…谢谢,非常感谢!