我需要阻止用户粘贴我的验证下拉单元格。我已经阅读并尝试了各种解决方案,其中没有一个能够正常工作。这段代码我检查粘贴的值是否遵循验证规则,但是如果将整个单元格粘贴到我的验证单元格上它就不起作用(似乎此事件在粘贴后触发,因此验证将与前一个单元格一起擦除):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Range("D2:F13")
If Not Cell.Validation.Value Then
MsgBox "Value violates validation rule"
Application.Undo
Exit Sub
End If
Next
理想情况下,代码会检查正在粘贴的单元格的值是否与验证下拉选项匹配,并且只允许将值(而不是格式)粘贴到单元格中。
谢谢!
答案 0 :(得分:1)
您可以在特定单元格中禁用剪切\复制:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' TARGET IS YOUR VALIDATION CELL
If Target.Column = 1 And Target.Row = 1 Then
Application.CutCopyMode = False
End If
End Sub
或者更复杂的是,您可以尝试在SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' TARGET IS YOUR VALIDATION CELL
If Target.Column = 1 And Target.Row = 1 Then
Set MyData = New DataObject
MyData.GetFromClipboard
'In MyData.GetText you have the clipboard data in text format
If MyData.GetText <> "what you want" then
'...
End if
End If
End Sub
在这种情况下,您必须添加对Microsoft Forms 2.0 Object Library
的引用。您可以在此路径中找到它:C:\Windows\System32\FM20.DLL