ユーザーが Excel シートに 2000 行以上を貼り付けようとした場合にメッセージを表示する

ユーザーが Excel シートに 2000 行以上を貼り付けようとした場合にメッセージを表示する

使っていますエクセル2013エンドユーザーが入力するワークブックを作成するには、正直言って検証がたくさんあるので、ユーザーが 2000 行以上を貼り付けようとすると、時間がかかりすぎます。

私の問題はパフォーマンスの問題ではなく、message boxユーザーが1000を超える文字を貼り付けようとしている場合に表示したいだけです。2000行Googleで検索しましたが、情報が見つかりませんでした。

答え1

申し訳ありませんが、これは答えのコードではありませんが、アプローチの 1 つです。

基本的に、ユーザーがデータを貼り付けようとしていることを知る簡単な方法がないので、これは困難になります。クリップボードのデータを取得することはそれほど難しくありませんが、貼り付けを傍受することは困難です。

クリップボードデータを取得するには、次のMSDNを参照してください。記事

貼り付けをインターセプトするには、遅延レンダリングを検討するのが1つのアイデアです。これ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 行以上削除しようとすると、エラーが表示されます。
もう 1 つの問題は、このコードをシート コードに貼り付けることができず、機能しないという問題が何なのかがわからないことです。

関連情報