Wyświetl komunikat, jeśli użytkownik spróbuje wkleić więcej niż 2000 wierszy do arkusza Excel

0

Korzystam z programu Excel 2013, aby utworzyć skoroszyt, który zostanie wypełniony przez użytkownika końcowego, szczerze mówiąc, mam wiele sprawdzeń poprawności, więc gdy użytkownik próbuje wkleić więcej niż 2000 wierszy, zajmuje to dużo czasu.

Mój problem nie dotyczy wydajności, chcę tylko wyświetlić, message boxjeśli użytkownik próbuje wkleić więcej niż 2000 wierszy . Szukałem tego w Google, ale nie mogłem znaleźć informacji na ten temat.

Mohammed Abusaif
źródło

Odpowiedzi:

1

Przepraszam, to nie jest kod odpowiedzi, ale jest podejście.

Zasadniczo będzie to trudne, ponieważ nie masz łatwego sposobu na określenie, kiedy użytkownik ma zamiar wkleić dane. Pobieranie danych ze schowka nie jest trudne, ale przechwycenie wklejania jest.

Aby pobrać dane ze schowka, zobacz następujący artykuł MSDN .

Aby przechwycić pastę, jeden pomysłem byłoby zajrzeć do opóźnionego renderowania jak wspomniano w tym StackOverflow odpowiedź.

Może być łatwiej mieć przycisk „Sprawdź schowek”, który użytkownicy naciskają przed wklejeniem?

cjb110
źródło
-1
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

Weź ten kod i umieść go w nowym arkuszu, będzie działał w 100% na wklejaniu i możesz zmodyfikować wiadomość, jak chcesz.
Ale szczerze mówiąc, jeśli próbujesz usunąć więcej niż 2000 wierszy, pojawi się błąd.
Kolejny problem, którego nie mogłem umieścić tego kodu w kodzie arkusza Nie wiem, na czym polega problem, że nie działa.

Mohammed Abusaif
źródło
zamieszczanie rozwiązań, które nawet dla ciebie nie działają, nie jest dobrym pomysłem, nie wiem, jak mogłoby to pomóc innym. Główny problem z twoim podejściem, że zdarzenie WorkSheet_Change występuje PO wklejeniu jest zakończone, więc użytkownik otrzyma tę wiadomość po odczekaniu, a nie wcześniej.
Máté Juhász,
Drogi Máté Juhászu, to moja wina, że ​​podam go jako odpowiedź. Powinienem to skomentować. Przepraszam, że jestem nowy w stosie. Ale wiedz, że staram się, aby
działał
jak pomaga uzyskanie ostatniej operacji ze stosu cofania? na pewno, jeśli jest na tym stosie, jest już za późno.
cjb110,