Excel VBA中如何防止粘贴过验证下拉单元格
我需要阻止用户粘贴到我的验证下拉单元格上。我读过并尝试过各种各样的解决方案,但没有一种是正确的。我拥有的这段代码检查粘贴的值是否符合验证规则,但如果将整个单元格粘贴到我的验证单元格上,则它不起作用(似乎粘贴后会触发此事件,因此验证会与前一个单元格一起被擦除): 理想情况下,代码将检查正在粘贴的单元格的值是否与验证下拉选项匹配,并且只允许将值(而不是格式)粘贴到单元格中Excel VBA中如何防止粘贴过验证下拉单元格,excel,vba,Excel,Vba,我需要阻止用户粘贴到我的验证下拉单元格上。我读过并尝试过各种各样的解决方案,但没有一种是正确的。我拥有的这段代码检查粘贴的值是否符合验证规则,但如果将整个单元格粘贴到我的验证单元格上,则它不起作用(似乎粘贴后会触发此事件,因此验证会与前一个单元格一起被擦除): 理想情况下,代码将检查正在粘贴的单元格的值是否与验证下拉选项匹配,并且只允许将值(而不是格式)粘贴到单元格中 谢谢 您可以在特定单元格中禁用剪切\复制: Private Sub Worksheet_SelectionChange(ByVa
谢谢 您可以在特定单元格中禁用剪切\复制:
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
Private子工作表\u selection更改(ByVal目标作为范围)
'目标是您的验证单元
如果Target.Column=1,Target.Row=1,则
设置MyData=newdataobject
MyData.GetFromClipboard
'在MyData.GetText中,剪贴板数据为文本格式
如果MyData.GetText“你想要什么”,那么
'...
如果结束
如果结束
端接头
在这种情况下,必须添加对Microsoft Forms 2.0对象库的引用。您可以在以下路径中找到它:
C:\Windows\System32\FM20.DLL
您可以在特定单元格中禁用剪切\复制:
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
Private子工作表\u selection更改(ByVal目标作为范围)
'目标是您的验证单元
如果Target.Column=1,Target.Row=1,则
设置MyData=newdataobject
MyData.GetFromClipboard
'在MyData.GetText中,剪贴板数据为文本格式
如果MyData.GetText“你想要什么”,那么
'...
如果结束
如果结束
端接头
在这种情况下,必须添加对Microsoft Forms 2.0对象库的引用。您可以在以下路径中找到它:
C:\Windows\System32\FM20.DLL
非常感谢您的回复,我使用了您的第一种方法。第一种方法很好,谢谢:)非常感谢您的回复,我使用了您的第一种方法。第一种方法很好,谢谢:)