Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einfügen riesiger Datenmengen verhindern.

Einfügen riesiger Datenmengen verhindern.
15.07.2014 14:08:25
Robert

Hallo zusammen,
Ich habe beim Debuggen meiner Historyfunktion ein paar Hürden lokalisiert:
Um einen Overflow zu verhindern, muss ich die TargetRange auf ein paar Millionen Zellen beschränken.
Bisher geschieht das mit folgendem rudimentären Code:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo ERRORHANDLER
Dim g As Double
g = Target.Count
ERRORHANDLER:
Range("A1", "MM50000").Select
MsgBox "To prevent overflow, your selection has been reduced"
End Sub

Ist natürlich unschön gelöst, aber deshalb bin ich hier :)
Ich bräuchte eine Möglichkeit, auch die Fehler, die mit dem Code oben nicht abgedeckt sind (z.B. kopieren eines gesamten sheets aus einem Anderen Workbook)
abzudecken.
Viele Grüße
Robert

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einfügen riesiger Datenmengen verhindern.
15.07.2014 14:57:18
Daniel
HI
ich weiss ja nicht, ob das dein Problem behebt, aber ab Excel 2007 sollte man:
g = Target.CountLarge
verwenden.
Excel arbeitet intern beim Zählen von Zellen, Zeilen und Spalten mit dem Datentyp LONG.
Dummerweise hat Excel seit 2007 aber mehr Zellen auf einem Blatt, als der Datentyp Long bereit stellt.
mit CountLarge wird dann ein passender Datentyp verwendet (vermutlich Double)
Gruß Daniel
PS:
Wertebereich LONG: +/- 2^31
Anzahl Zeilen: 2^20
Anzahl Spalten: 2^14
Anzahl Zellen: 2^34

AW: Einfügen riesiger Datenmengen verhindern.
16.07.2014 07:39:01
Robert
Hallo Daniel,
.Countlarge habe ich auch schon entdeckt.
Scheinbar unterstützt aber nicht jedes Objekt, das .Count unterstützt auch .Countlarge :(
Auch ist der Code oben ja nur ein Workaround um zu verhindern, dass mein Programm mit zu vielen gleichtzeitig bearbeiteten Zellen in ein Problem rennt.
Viele Grüße Robert

Anzeige
AW: Einfügen riesiger Datenmengen verhindern.
15.07.2014 18:38:52
Nepumuk
Hallo,
die Zwischenablage auszulesen um herauszubekommen wie viele Zellen sie enthält ist (für mich) kein Problem. Nur den Moment des Einfügens kannst du nicht immer abfangen. Solltest du es aber tatsächlich schaffen, alle Möglichkeiten (Shortcut, Kontextmenü, Ribbon) abzufangen, dann verrate ich dir wie das mit dem Clipboard funktioniert.
Gruß
Nepumuk

AW: Einfügen riesiger Datenmengen verhindern.
16.07.2014 07:37:11
Robert
Hallo Nepumuk,
okay, dann scheint es die Möglichkeit ja zu geben.
Anstatt alle möglichkeiten des Einfügens abzufangen, würde ich einfach rigoros die Zwischenablage beim Aktivieren meines Workbook löschen, wenn das möglich ist.
Da könnte man ja, wenn man nett ist, noch eine Ausweichmöglichkeit per Msgbox einbauen.
Viele Grüße
Robert

Anzeige
AW: Einfügen riesiger Datenmengen verhindern.
16.07.2014 08:19:21
Robert
Häkchen vergessen -.-

AW: Einfügen riesiger Datenmengen verhindern.
16.07.2014 09:17:13
Nepumuk
Hallo,
das hilft dir aber nichts wenn du Daten aus einer anderen Anwendung oder einer Excelmappe aus einer zweiten Instanz kopierst. Da gibt es kein Activate-Event, da ist etwas mehr Aufwand notwendig.
Nur wenn du zwischen Excelmappen innerhalb einer Instanz wechselst klappt das so:
Private Sub Workbook_Activate()
Application.CutCopyMode = False
End Sub

Gruß
Nepumuk

AW: Einfügen riesiger Datenmengen verhindern.
16.07.2014 10:15:03
Robert
Okay Super, damit habe ich schonmal den Großteil der Nutzer abgedeckt. Vielen Dank!
Die Anzahl der Personen die wissen, dass man Excel in mehreren Instanzen öffnen kann ist glücklicherweise gering.
Trotzdem aus Neugier die Frage: kann Excel auf das Globale Clipboard zugreifen und dies leeren?
Denn das Workbook.activate Event wird ja auch beim wechsel von einem Anderen Programm auf Excel ausgelöst oder liege ich da falsch?
Viele Grüße
Robert

Anzeige
AW: Einfügen riesiger Datenmengen verhindern.
16.07.2014 10:57:59
Nepumuk
Hallo,
kann Excel auf das Globale Clipboard zugreifen und dies leeren? KLAR !!!
Denn das Workbook.activate Event wird ja auch beim wechsel von einem Anderen Programm auf Excel ausgelöst FALSCH !!!
Hab ich aber schon geschrieben dass das nur beim Wechsel von einer Mappe zur anderen innerhalb der selben Instanz ausgelöst wird. Wie immer gilt da: Probieren geht über studieren.
Es gibt natürlich eine Möglichkeit festzustellen ob Excel / deine Mappe soeben den Fokus erhalten hat. Nur nicht mit "kleinem VBA" sondern per API.
Gruß
Nepumuk

AW: Einfügen riesiger Datenmengen verhindern.
17.07.2014 12:01:18
Robert
Okay alles klar, hatte ich tasächlich nicht so rausgelesen.
Dann wird das mit dem Activate Event gemacht und muss so reichen :)
Aber vielen Dank für die Klarstellung!

Anzeige
AW: Einfügen riesiger Datenmengen verhindern.
17.07.2014 12:01:33
Robert
Okay alles klar, hatte ich tasächlich nicht so rausgelesen.
Dann wird das mit dem Activate Event gemacht und muss so reichen :)
Aber vielen Dank für die Klarstellung!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige