
使っていますエクセル2013エンドユーザーが入力するワークブックを作成するには、正直言って検証がたくさんあるので、ユーザーが 2000 行以上を貼り付けようとすると、時間がかかりすぎます。
私の問題はパフォーマンスの問題ではなく、message box
ユーザーが1000を超える文字を貼り付けようとしている場合に表示したいだけです。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 行以上削除しようとすると、エラーが表示されます。
もう 1 つの問題は、このコードをシート コードに貼り付けることができず、機能しないという問題が何なのかがわからないことです。