
나는 사용하고있다엑셀 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개 이상의 행을 삭제하려고 하면 오류가 나타납니다.
이 코드를 시트 코드에 넣을 수 없는 또 다른 문제는 작동하지 않는 문제가 무엇인지 모르겠습니다.