Отображать сообщение, если пользователь пытается вставить более 2000 строк в таблицу Excel

Отображать сообщение, если пользователь пытается вставить более 2000 строк в таблицу 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 строк, появится ошибка.
Другая проблема, я не смог поместить этот код в свой код листа, я не знаю, в чем проблема, он не работает.

Связанный контент