Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用以下vba代码的所有粘贴功能_Vba_Excel_Copy Paste - Fatal编程技术网

禁用以下vba代码的所有粘贴功能

禁用以下vba代码的所有粘贴功能,vba,excel,copy-paste,Vba,Excel,Copy Paste,我正在excel中运行一个目标intersect方法,以防止用户在验证单元格上粘贴,问题是,我没有考虑所有的粘贴方法,并且pastespecial会覆盖单元格验证 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("I14:J1000")) Is Nothing Then On Error Resume Next ' In case there's been no pre

我正在excel中运行一个目标intersect方法,以防止用户在验证单元格上粘贴,问题是,我没有考虑所有的粘贴方法,并且pastespecial会覆盖单元格验证

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("I14:J1000")) Is Nothing Then
    On Error Resume Next ' In case there's been no previous action
    ' Check if the last action was a paste
    If Left(Application.CommandBars("Standard").Controls("&Undo").List(1), 5) = "Paste" Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
    End If
End If
End Sub
我使用了下面的代码并将其绑定到Ctrl V,以便与目标格式匹配,但它覆盖了前面代码中的单元格验证:

Sub PasteWithDestinationFormatting()
ActiveCell.PasteSpecial (xlPasteValues)
End Sub
我假设我需要将=“Paste”更改为“PasteSpecial”,但它没有完成我希望它完成的任务,很可能是因为我没有PasteSpecial对象的正确位置


谢谢你的帮助

你为什么不测试一下你的理论(从谷歌搜索
Paste
PasteSpecial
方法开始)?尽管如此,我不清楚你到底在做什么,但似乎你把一些简单的事情复杂化了。非vba解决方案-锁定单元格并保护工作簿。