如何在复制粘贴期间避免在Excel中覆盖/丢失数据验证?

时间:2019-06-07 09:03:55

标签: excel vba

我有一个启用了宏的工作簿,并且在VBA代码中定义并使用了某些数据验证(如输入消息等),以使宏正常运行。但是,当用户尝试从其他来源复制粘贴数据时,这些验证将丢失,并且运行时的宏又会导致运行时错误。

我尝试浏览多个站点,并且只能看到诸如限制复制粘贴或引发警告消息之类的选项。但是对于我的业务案例,用户使用海量数据集,并且限制复制粘贴不是用户友好的方法。

因此,任何可能的解决方案都会有很大帮助! 〜谢谢,JM

1 个答案:

答案 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中。