Exibir uma mensagem se o usuário tentar colar mais de 2.000 linhas em uma planilha do Excel

Exibir uma mensagem se o usuário tentar colar mais de 2.000 linhas em uma planilha do Excel

estou usandoExcel 2013para criar uma pasta de trabalho que será preenchida por um usuário final, honestamente tenho muitas validações, então quando o usuário está tentando colar mais de 2.000 linhas leva muito tempo.

Meu problema não é com o desempenho, só quero exibir ummessage box se o usuário está tentando colar mais de2.000 linhas. Procurei no Google, mas não consegui encontrar informações sobre isso.

Responder1

Desculpas, este não é o código da resposta, mas é uma abordagem.

Basicamente, isso será difícil, pois não há uma maneira fácil de saber quando o usuário está prestes a colar os dados. Obter os dados da área de transferência não é tão difícil, mas interceptar a pasta é.

Para recuperar os dados da área de transferência, consulte o seguinte MSDNartigo.

Para interceptar a colagem, uma ideia seria examinar a renderização atrasada, conforme mencionado emesseResposta StackOverflow.

Talvez seja mais fácil ter um botão 'Verificar área de transferência' que seus usuários pressionem antes de colar?

Responder2

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

Pegue esse código e coloque em uma nova planilha, funcionará 100% na colagem e você poderá modificar a mensagem como quiser.
Mas, honestamente, se você estiver tentando excluir mais de 2.000 linhas, um erro aparecerá.
Outro problema que não consegui colocar esse código no código da minha planilha não sei qual é o problema não está funcionando.

informação relacionada