2013-06-05 91 views
0

我想防止單元格被編輯,因爲我需要保留其中的公式。問題是,我想將另一個工作簿中的大量值粘貼到我的工作表中,並且粘貼的目標範圍包括一些不能更改的單元格。因此,一個簡單的鎖定選項將不起作用,因爲這會阻止我一次執行此操作。Excel VBA - 防止編輯時更改單元格

我試過使用一個代碼,其中單元在單元更改後變回其預期公式,但是,這會產生無限循環。請參閱下面的簡化示例:

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 

非常感謝您的幫助,非常感謝。

編輯: 由於我以各種格式和工作簿名稱接收這些文件,因此從其他工作簿傳輸的自動化解決方案將不起作用。

+1

我假設您將此代碼添加到要粘貼到工作表的工作表(而不是工作簿的標準模塊)中。將If/EndIf封裝在Application.EnableEvents = False和Application.EnableEvents = True中以避免無限循環。 – chuff

+0

@chuff,對不起,我以前沒有看到您的意見... –

+0

謝謝,非常感謝! – jcv

回答

2

如果您的問題是無限循環比這裏相當普遍的問題解決方案。您只需關閉一段時間的事件,然後再打開它們。您的代碼可能如下所示:

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 
0

您必須創建一個Sub來輸入「常駐」公式。在粘貼新值後,只需撥打此分組。

+0

感謝marlenunez的快速回復。我怎麼會打電話給另一個子?你可以在代碼中放下一個例子 - 這將非常感謝。 – jcv

相關問題