我有一个启用了宏的工作簿,并且在VBA代码中定义并使用了某些数据验证(如输入消息等),以使宏正常运行。但是,当用户尝试从其他来源复制粘贴数据时,这些验证将丢失,并且运行时的宏又会导致运行时错误。
我尝试浏览多个站点,并且只能看到诸如限制复制粘贴或引发警告消息之类的选项。但是对于我的业务案例,用户使用海量数据集,并且限制复制粘贴不是用户友好的方法。
因此,任何可能的解决方案都会有很大帮助! 〜谢谢,JM
答案 0 :(得分:0)
您可以使用布尔数据类型在Workbook.Activate事件中跟踪“ Application.CutCopyMode”。
Private blCCP As Boolean 'Boolean CutCopyPaste
Private Sub Workbook_Activate()
If Application.CutCopyMode Then
blCCP = True
End If
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If blCCP = True Then
'
'Enter code to apply data validation
'
blCCP = False
End If
End Sub
这将检测激活工作簿时CutCopyMode
是否打开。
用户将其粘贴到工作簿中的某个位置后,将触发Workbook_SheetCalculate
事件。
在这种情况下,请放入VBA代码以应用所有数据验证。
希望这对您有所帮助。
编辑:确保将此代码放在项目窗口中 Microsoft Excel对象下的ThisWorkbook
中。