当ctrl + v

时间:2017-06-13 10:07:51

标签: vba copy-paste paste

当用户想要粘贴时,有什么方法可以避免粘贴和粘贴为值(粘贴特殊)?

在Target更改之前调用的代码? 按下ctrl + v后调用的代码以及粘贴值之前的代码..

我有一个代码:

Private Sub Worksheet_Change(ByVal Target As Range)   
Dim xValue As String 
Dim Dim xCheck1 As String
Dim xCheck2 As String

If Target.Count > 1 Then
    Exit Sub
End If

Application.EnableEvents = False
xValue = Target.Value
On Error Resume Next
xCheck1 = Target.Validation.InCellDropdown
On Error GoTo 0
Application.Undo
On Error Resume Next
xCheck2 = Target.Validation.InCellDropdown
On Error GoTo 0
If xCheck1 = xCheck2 Then
    Target = xValue
Else
    ' Paste special - instead of paste
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
End If
Application.EnableEvents = True
End Sub

此代码应避免粘贴值列表,代码应仅粘贴一个值,但它无法正常工作。我想复制另一个工作簿中的值,并在用户按下ctrl + v时随时粘贴。我想避免写入自动excel msgbox:

“名称'列表'已存在。单击是以使用该版本的名称,或单击否以重新保留您正在移动或复制的列表版本。”

当不想重写数据验证时类似会很有用。

感谢您的任何支持。

0 个答案:

没有答案