2017-10-29 149 views
0

我有一些Excel宏,人們在執行前手動粘貼到它的數據。Excel VBA禁用從工作表中粘貼特定範圍

爲了避免宏運行中的錯誤,我想禁用粘貼某些列的數據。

Private Sub Worksheet_Change(ByVal Target As Range) 
    Target.Column = 7 
    Target.Column = 8 
    Target.Column = 12 
End Sub 

試過有人能指導我如何可能?

+2

是,閱讀有關'Worksheet_Change'事件,是有人嘗試在列「B」粘貼(在這個例子中),則內部檢查,如果'Target.Column = 2',禁用粘貼過程 –

+0

鎖定單元格,你想脫離限制和保護工作表 – jsotola

+0

@ShaiRado我看到我需要爲此創建私有子,但在宏運行之前粘貼是**。有沒有什麼辦法可以控制它而不創建新的子?我希望它在文件打開時處於活動狀態 –

回答

3

請嘗試下面的代碼,將其添加到您要禁用該用戶粘貼到某些列的工作表中。

Private Sub Worksheet_Change(ByVal Target As Range) 

' Restrict the user from deleting or Pasting to certain columns 

Select Case Target.Column 
    Case 7, 8, 12 
     With Application 
      .EnableEvents = False 
      .Undo 
      MsgBox "Pasting to columns 'F' , 'G' or 'L' is not allowed", vbCritical 
      .EnableEvents = True 
     End With 

    Case Else 
     ' do nothing/or something else 

End Select 

End Sub