Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

CurrentRange vs. CurrentRegion

CurrentRange vs. CurrentRegion
Werner
VBA-Kenntnisse: mittelgut
Hallo!
Laut der Microsoft-Hilfe zu EXCEL 2007 kann man einen benutzten Zellbereich auch etwa so markieren:

Private Sub InGebrauch()
Dim tbl As Range
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
End Sub


Ist das eine Alternative zum UsedRange, der manchmal größer ausfällt als der tatsächliche benutzte
Bereich, weil der UsedRange oft auch Leerzellen ausserhalb des tatsächlich benutzten Bereichs mitenthält?
Ich bin durch obigen Code etwas verwirrt. Kann mir jemand den Unterschied zwischen dem UsedRange und dem durch obigen Code markierten Bereich erklären?
Werner

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Erklärungsversuch ...
07.05.2008 10:40:56
Matthias
Hallo Werner
Ich glaub das hat eher mit einem kleinen Denkfehler zu tun.
Dein Code verursacht bei mir übrigens einen Fehler. (XL2000)
Nimm mal eine leere Mappe
Markiere B4:F16 und schreibe ein X dann STRG+Enter jetzt ist der gesamte Bereich B4:F16 mit "X" gefüllt.
Wenn Du nun mal in z.B in E22 eine Zahl einträgst und dannach wieder löschst,
so gehört E22 mit zur UsedRange!
UsedRange ist der benutzte Bereich - richtig ! Auch E22 gehört nun dazu, denn die Zelle war in Benutzung!!
CurrentRegion ist nur der Bereich, der durch Leerzellen umschlossen ist
Setzt Du den Cursor in ein Feld im Bereich B4:F16 und startest das Makro

Sub InGebrauch()
Dim tbl As Range
Set tbl = ActiveCell.CurrentRegion
tbl.Select
Set tbl = Nothing
End Sub


wird der durch die Leerzellen umschlossene Bereich selektiert.
Ganz anders bei UsedRange. Dort gehört jetzt die Zelle E22 dazu! Und bis dahin wird auch markiert.
wie in diesem Code:


Sub usdRange()
ActiveSheet.UsedRange.Select
End Sub


Fazit: Man sollte den UsedRange vor dem Speichern der Datei aufräumen ;o)
Userbild

Anzeige
CurrentRegion ist nicht so ohne
Werner
Hallo Matthias,
so ungefähr hatte ich mir das auch vorgestellt. Danke für den Hinweis! Der UsedRange ist also der Range, der schon einmel benutzt war, also nicht der aktuelle benutzte Bereich. Will man umgebende Leerzellen aus dem Bereich "weg-trimmen", scheint CurrentRegion und ein Code wie der von mir angegebene vielleicht geeigneter als UsedRange zu sein.
Du schlägst vor, den UsedRange aufzuräumen. Das würde ich auch gern tun, aber wie? In einem anderen Thread (schon aus dem sichtbaren Bereich verschwunden) wurde mir vorgeschlagen, die Daten in eine andere Tabelle umzukopieren. Bei großen Datenbeständen ist diese Methode des Aufräumens aber immer mit einem Datenverlusrisiko verbunden. Werner

Anzeige
AW: CurrentRegion ist nicht so ohne
07.05.2008 10:56:00
Bertram
Hallo Werner,
wenn du alle Spalten hinter deiner zuletzt gefüllten Spalte und alle Zeilen unter der letzen gefüllten Zeile löscht, die Mappe speicherst, schließt und wieder öffnest, ist der UsedRange bei der letzten befüllten Zelle zu Ende.
Gruß
Bertram

praktisch ganz annehmbar
Werner
Hallo Bertram,
sicherlich irgendwie machbar, nur sehen die leeren und die scheinleeren Zeilen und Spalten alle gleich aus. Und in einer Excel-Datei gibt es meistens weit mehr leere und scheinleere und Zeilen und Spalten als mit dem bloßen Auge erkennbare gefüllte.
Und bei Excel 2007 hat eine Datei eine Million Zeilen. Da kann man natürlich eine Schleife programmieren, die alle Zeilen und Spalten nach der jeweils belegten leert, doch das ist etwas zeit-aufwendig.
Aus praktischer Sicht ist dein Vorschlag aber ganz gut: Ich lasse per VBA z.B. immer die 20 Zeilen nach der letzten gefüllten Zeile leeren und vertraue darauf, dass die weißen Zeilen dahinter schon vorher leer waren... Dann schließe und lade ich die Datei von neuem. Werner

Anzeige
AW: praktisch ganz annehmbar
07.05.2008 11:18:00
Bertram
Hallo Werner,
du weißt doch in deiner Datei, in welcher Zelle der letze Wert, Formel oder was auch immer steht. Ich hab zwar kein Excel 2007, aber es sollte da doch auch funktionieren, dass du einen Zeilenkopf anklickst (ganze Zeile markieren) und mit Ende+Pfeil nach unten (mit gedrückter Shift-Taste) alle darunterliegenden Zeilen markierst und die dann gesamt löschst (nicht nur den Inhalt, sondern die ganzen Zeilen). Und selbiges dann für die Spalten mit Ende+Pfeil nach rechts. Ist eigentlich ne Sache von 30 Sekunden.
Gruß
Bertram

Ich probiere es mal aus
Werner
Hallo Bertram,
Dank für den Hinweis. Ich habe Excel auf einem anderen Computer, werde es aber m. höchstens 1 Tag Zeitverzögerung mal ausprobieren. Unter "Ende" verstehst du sicherlich die "End"-Taste. Werner

Anzeige
AW: Ich probiere es mal aus
07.05.2008 23:10:00
Matthias
Hallo
Heute mittag hat leider mein Rechner mehrfach gestreikt. Immer , wenn ich auf "Vorschau" geklickt habe.
Keine Ahnung, ob es am Netzwerk oder am Browser lag. Aber hast ja weitere Hilfe bekommen ;o)
Zitat:
Unter "Ende" verstehst du sicherlich die "End"-Taste
Auf meiner Tastatur steht z.B. wirklich Ende unter der Pos1 - Taste
zum Thema Zelle wirklich leer oder nicht:
Drücke F5-Inhalte-Leerzellen
Gruß Matthias

funktioniert bei mir nicht
Werner
Hallo Matthias L.,
die Taste über der Taste "End" heisst bei mir "Home". Doch über die Tasten Shift + End + Pfeil nach unten nach Markierung einer ganzen Zeile bekomme ich nur eine einzige Zeile, nämlich die darauffolgende, markiert.
Werner

Anzeige
dann machst Du sicher was falsch
08.05.2008 08:15:00
Matthias
Hallo
Klicke auf den Zeilenkopf z.B. 4
Jetzt wird die komplette Zeile 4 markiert. Nun...
... mit gedrückter Shift-Taste einmal auf die END-Taste drücken also End wieder loslassen
Shift aber nicht loslassen, nun den CurorPfeil nach unten einmal drücken.
Funktionierts ?
Hast Du probiert F5-Inhalte-Leerzellen?
Gruß Matthias

AW: dann machst Du sicher was falsch
Werner
Hallo Matthias,
OK, ich hatte "End" nicht losgelassen, als ich die Pfeiltaste gedrückt habe. Daran wird es liegen. Da Excel bei mir auf einem anderen Computer ist, muss ich wieder Bedenkzeit erbitten. Werner

Anzeige
Jetzt funktioniert es!
Werner
Hallo Matthias L.,
stimmt, wenn ich die "End"-Taste loslasse und erst dann die Pfeil-nach-unten drücke, funktioniert es!!
Bedanke mich! Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige