2017-10-29 163 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