如果用户尝试将超过 2000 行粘贴到 Excel 工作表中,则显示一条消息

如果用户尝试将超过 2000 行粘贴到 Excel 工作表中,则显示一条消息

我在用Excel 2013要创建一个由最终用户填充的工作簿,老实说,我有很多验证,因此当用户尝试粘贴超过 2000 行时,需要花费太多时间。

我的问题不是性能问题,我只是想在message box用户尝试粘贴超过2000 行。我在 Google 上搜索过,但没有找到相关信息。

答案1

抱歉,这不是答案的代码,但这是一种方法。

基本上这会很困难,因为你没有简单的方法来判断用户何时要粘贴数据。获取剪贴板数据并不难,但拦截粘贴却很难。

要检索剪贴板数据,请参阅以下 MSDN文章

为了拦截粘贴,一个想法是研究延迟渲染,如StackOverflow 答案。

有一个按钮“检查剪贴板”让用户在粘贴之前按下可能会更容易吗?

答案2

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim sLastOp As String
 Dim cell As Range
 Dim a As Integer
 Dim Row As Range
  a = 0
 For Each Row In Range(Target.Cells.Address)
    If InStr(Row.Address, "A") Then
        a = a + 1
    End If
Next
 '--get the last operation from the undo stack
 sLastOp = Application.CommandBars("Standard").FindControl(ID:=128).List(1)
 Select Case sLastOp
   '--if last operation was Paste or PasteSpecial, display message
   Case "Paste", "Paste Special"
   If a > 200 Then MsgBox "Please wait till pasting finishes." & a, vbOKOnly
   Case Else 'do nothing
 End Select
End Sub

将此代码放入新工作表中,粘贴后它将 100% 有效,您可以根据需要修改消息。
但老实说,如果您尝试删除超过 2000 行,则会出现错误。
另一个问题是我无法将此代码放入我的工作表代码中,我不知道它不起作用是什么问题。

相关内容