UsedRange --> scheinbar leere Bereiche

Hallo zusammen,

ich benutze in einer automatisierten Datei UsedRange, um den Druckbereich festzulegen.

Leider ist der festgelegte Druckbereich zu breit. Wenn ich mir mit Debug.Print den UsedRange der einzelnen Sheets ausgeben lassen, wird ein leerer Bereich mit zum UsedRange gezählt.
Der Bereich scheint vollkommen leer zu sein. Selbst wenn ich über den Löschen-Knopf „Alle Löschen“ auswähle, wird dieser Bereich immer noch dem UsedRange zugeordnet. Erst wenn ich die betroffenen Spalten komplett (per Zellen Löschen) lösche, ändert sich der UsedRange so wie ich es haben will.

Kennt jemand dieses Problem? Was ist die Ursache/Lösung?

Danke.

MfG
Stephan

ich benutze in einer automatisierten Datei UsedRange, um den
Druckbereich festzulegen.
Leider ist der festgelegte Druckbereich zu breit. Wenn ich mir
mit Debug.Print den UsedRange der einzelnen Sheets ausgeben
lassen, wird ein leerer Bereich mit zum UsedRange gezählt.
Der Bereich scheint vollkommen leer zu sein.

Hallo Stephan,

das Problem ist bekannt. Excel merkt sich sehr zäh was du in Zellen machst. Z.B. Zelle IV65536 nur anklicken bleibt ohne Folgen, ABER
schreibst du da was rein, löschst das gleich wieder ist es passiert.
Für Excel ist dann .Usedrange (wenn A1 benutzt wurde) A1:IV65536.
.Specialcells(xlCellTypeLastCell) reagiert wie .usedrange.

Leider, wenn du das Blatt kopierst wird dieses Excelwissen mitgenommen. Manuelle Abhilfe ist einfach wie du schon herausgefunden hast, quasi rechts vom sichtbar belegeten „usedrange“ alles markieren und dann „Zellen löschen“. Desgleichen unterhalb des sichtbaren usedrange.

Alternativ, neue Mappe mit den gleichen Blattnamen anlegen (gfs. über Vba), dann blatt für Blatt vorgehen, sichtbaren usedrange markieren, kopieren, einfügen.
Dann biste das Problem los bisde halt wieder "außerhalb des Bereiches etwas machst, das wird dann mit zum usedrange.

Gruß
Reinhard

Hallo Reinhard

das Problem ist bekannt. Excel merkt sich sehr zäh was du in
Zellen machst.

danke für deine Antwort. War leider nicht das was ich hören wollte.

Manchmal ist Excel einfach nur Sch***e.

Manuelle Abhilfe ist einfach wie du schon
herausgefunden hast, quasi rechts vom sichtbar belegeten
„usedrange“ alles markieren und dann „Zellen löschen“.
Desgleichen unterhalb des sichtbaren usedrange.

ich benutze in einer automatisierten Datei UsedRange, um den
Druckbereich festzulegen.

Manuelle Abhilfe nützt mir sehr wahrscheinlich nix, da sich der Druckbereich tagtäglich ändern kann. Wenn der Druckbereich immer der Gleiche wäre, hätte ich auf UsedRange verzichtet und den Druckbereich einfach über die Oberfläche festgelegt.

Ich muss mir die Datei nochmal genau anschauen. Vielleicht kann noch etwas optimieren. Ansonsten muss ich mir wohl eine eigene Funktion programmieren, die mir den tatsächlich genutzten Bereich zurück gibt.

MfG
Stephan

Hallo Stephan,

das Problem ist bekannt. Excel merkt sich sehr zäh was du in
Zellen machst.

danke für deine Antwort. War leider nicht das was ich hören
wollte.

äh, ich bin nur der Bote der schlechten Nachricht, prügel Bill :smile:

Manchmal ist Excel einfach nur Sch***e.

Tsts, Excel ist manchmal eine Herausforderung *gg*

Ansonsten muss ich mir wohl eine
eigene Funktion programmieren, die mir den tatsächlich
genutzten Bereich zurück gibt.

Mir fiel bislang dazu noch nix gescheites ein, also was kurzes schnelles.
Letztens hatte ich eine Fremddatei da ging es darum die letzte
belegte Spalte in einer Zeile festzustellen. Leider waren da verknüpfte Zellen ohne Ende.

Da gelang mir nicht mal manuell was ich dir beschrieb zu tun, ich hasse verknüpfte Zellen. In Vba kam ich auf keine Lösung.

Davon abgesehen geht ungetestet sicher ein Makro was nicht
auf usedrange, End(xltoleft) o.ä. achtet sondern halt in dem sogenanten usedrange alle Zeilen, Spalten durchgeht, da die Zellen um die echten letzten Zeilen, Spalten zu erhalten.

Vllt., siehste ja an der tabelle muß man nicht nur den Zellinhalt prüfen sondern auch ob da Rahmen um die Zellen sind.
Ist halt nix kurzes schnelles aber hauptsache es klappt.

Gruß
Reinhard

Hallo Reinhard,

Davon abgesehen geht ungetestet sicher ein Makro was nicht
auf usedrange, End(xltoleft) o.ä. achtet sondern halt in dem
sogenanten usedrange alle Zeilen, Spalten durchgeht, da die
Zellen um die echten letzten Zeilen, Spalten zu erhalten.

in meinem konkreten Fall kann ich einfach in der Zelle rechts unten einen versteckten Wert hinterlegen. Wenn überhaupt werden nur Zeilen darüber oder Spalten auf der linken Seite gelöscht. Wenn ich den UsedRange dann nach diesem Wert durchsuche, ist das eine Lösungsmöglichkeit.

Ist halt schade, dass man auf solche Tricks zurückgreifen muss.

MfG
Stephan

Grüezi Stephan

Ist halt schade, dass man auf solche Tricks zurückgreifen
muss.

Du könntest ja auch ergründen warum sich der UsedRange denn (immer wieder?) verstellt und die Ursache angehen, statt die Symptome zu bekämpfen.

Was also passiert in/mit der Mappe was die Bereichsverändernung auslöst?

Allenfalls kannst Du den UsedRange auch per VBA wieder zurücksetzen, oder die letzte beschriebene Zelle mit VBA-Code ermitteln und den Druckbereich darauf setzen lassen.

Um all das besser (oder überhaupt) beurteilen zu können, bräuchten wir ein paar nähere Infos zu deiner Problem-Datei…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -