我在用Excel 2013要创建一个由最终用户填充的工作簿,老实说,我有很多验证,因此当用户尝试粘贴超过 2000 行时,需要花费太多时间。
我的问题不是性能问题,我只是想在message box
用户尝试粘贴超过2000 行。我在 Google 上搜索过,但没有找到相关信息。
答案1
答案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 行,则会出现错误。
另一个问题是我无法将此代码放入我的工作表代码中,我不知道它不起作用是什么问题。