Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UsedRange?

UsedRange?
Helmut
hallo liebe user,
habe wieder eine frage:
wie kann ich statt der schleife
for i = 3 To 88
next i
in einem vba-script
nur den zeilenbereich eingeben in dem etwas steht; bis auf die überschrift in der 1. zeile und der 2. zeile?
da gibt es doch etwas mit usedrange, oder? wie kann ich das bei meiner schleife genau verwenden?
danke im voraus.
lg
helmut
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: UsedRange?
08.03.2010 17:24:32
xr8k2
Hallo Helmut,
was genau willst du denn erreichen?
Gruß,
xr8k2
AW: UsedRange?
08.03.2010 20:16:27
Helmut
hi,
ich habe eine schleife von zeile 1 bis 88 gemacht, die auch funktioniert und einige dinge ausführt. nun kann es aber sein, dass eine zeile hinzukommt. dann müßte ich ins script und von 3 bis 89 die schleife laufen lassen. um das zu umgehen gibt es ja einen befehl UsedRange, der alle zeilen mitnehmen soll, egal wieviele das sind. nur wie genau sieht das aus?
for i = 3 To UsedRange.Row.Count ? so etwa?
lg
helmut
Anzeige
AW: UsedRange?
09.03.2010 02:27:19
Daniel
Hi
im Prinzip ja.
die Syntax sieht dann aber so aus:
For i = 3 to ActiveSheet.Usedrange.Rows.count
allerdings sollte in deiner Tabelle die erste Zeile befüllt sein, nur dann entspricht die Anzahl der Zeilen auch der letzten befüllten Zeilennummer.
desweiteren sollte man noch wissen, das UsedRange nicht immer zuverlässig arbeitet, sollten z.B. Formatierungen vorhanden sein, die über den mit Werten befüllten bereich hinausgehen, so gehören diese Zellen, die nur Formate enthalten, auch zur UsedRange. Auch nach dem Löschen von Werten am Datenende kann es sein, daß die UsedRange nicht immer ganz aktuell ist.
Gruß, Daniel
Anzeige
AW: UsedRange?
09.03.2010 08:20:56
Helmut
Hi Daniel,
super, das funktioniert. Ich danke dir, auch für deinen Tipp.
Liebe Grüße
Helmut
AW: UsedRange?
09.03.2010 08:28:44
Helmut
die ersten beiden zeilen bei mir sind mit überschriften befüllt. ich nehme an das reicht, und ist das was du gemeint hast, dass sie befüllt sein sollten.
lg
helmut
offset()
08.03.2010 17:26:02
ransi
HAllo
Wenn das deine Daten sind:
Tabelle1

 ABCDEF
1Daten 1Daten 2Daten 3Daten 4Daten 5 
21761698  
394811094  
498168738  
566349276  
616119680  
7935210020  
833667473  
970921043  
104532815  
1160198032  
124208498  
1339588697  
1447413856  
1547388912  
1679571122  
1737487080  
18    27 
19    14 
20    82 
2166     
22      


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Dann so:
Option Explicit


Public Sub test()
Dim Bereich As Range
Dim L As Long
With Sheets("Tabelle1").Range("A1")
    Set Bereich = Intersect(.CurrentRegion, .CurrentRegion.Offset(2, 0))
End With
MsgBox Bereich.Address
End Sub



ransi
Anzeige
;
Anzeige

Infobox / Tutorial

Dynamische Schleifen mit UsedRange in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Schleife in VBA dynamisch zu gestalten und nur die befüllten Zeilen zu berücksichtigen, kannst Du den UsedRange-Befehl verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor (ALT + F11).

  2. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" → Einfügen → Modul.
  3. Gib den folgenden Code ein:

    Sub DynamischeSchleife()
       Dim i As Long
       Dim letzteZeile As Long
    
       ' Letzte befüllte Zeile bestimmen
       letzteZeile = ActiveSheet.UsedRange.Rows.Count
    
       ' Schleife von Zeile 3 bis zur letzten befüllten Zeile
       For i = 3 To letzteZeile
           ' Deine Logik hier
           Debug.Print Cells(i, 1).Value ' Beispiel: Wert der ersten Spalte ausgeben
       Next i
    End Sub
  4. Führe das Skript aus, um die Schleife zu testen.

Mit diesem Code wird die Schleife automatisch die Anzahl der befüllten Zeilen berücksichtigen, ohne dass Du die Endzeile manuell anpassen musst.


Häufige Fehler und Lösungen

  • Fehler: Schleife berücksichtigt auch leere Zeilen

    • Lösung: Stelle sicher, dass die erste Zeile des UsedRange befüllt ist. Andernfalls könnte die UsedRange nicht korrekt arbeiten.
  • Fehler: UsedRange wird nicht aktualisiert

    • Lösung: Nach dem Löschen von Inhalten am Ende der Daten kann es notwendig sein, die Datei zu speichern und erneut zu öffnen, damit UsedRange aktualisiert wird.

Alternative Methoden

Eine Alternative zur Verwendung von UsedRange ist die Verwendung der CurrentRegion-Eigenschaft, um den aktuell befüllten Bereich zu bestimmen:

Dim Bereich As Range
Set Bereich = ActiveSheet.Range("A1").CurrentRegion

Anschließend kannst Du mit der Rows.Count-Eigenschaft auf die Anzahl der befüllten Zeilen zugreifen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du UsedRange in verschiedenen Szenarien nutzen kannst:

  1. Summe einer Spalte berechnen:

    Dim summe As Double
    Dim letzteZeile As Long
    
    letzteZeile = ActiveSheet.UsedRange.Rows.Count
    For i = 3 To letzteZeile
       summe = summe + Cells(i, 2).Value ' Summe der zweiten Spalte
    Next i
    MsgBox "Die Summe beträgt: " & summe
  2. Daten kopieren:

    Dim copyRange As Range
    Set copyRange = ActiveSheet.Range("A3:A" & ActiveSheet.UsedRange.Rows.Count)
    copyRange.Copy Destination:=Sheets("Zielblatt").Range("A1")

Tipps für Profis

  • Verwende .UsedRange mit Bedacht: Sei vorsichtig, wenn Du Formatierungen in der Tabelle hast, die über den befüllten Bereich hinausgehen, da diese auch Teil des UsedRange sein können.

  • Überprüfe die Daten: Vor der Verwendung von UsedRange ist es empfehlenswert, die Daten auf mögliche leere Zeilen oder unerwartete Formatierungen zu überprüfen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen UsedRange und CurrentRegion? UsedRange bezieht sich auf den gesamten befüllten Bereich der Tabelle, während CurrentRegion den Bereich um eine bestimmte Zelle herum erfasst, der durch leere Zeilen oder Spalten getrennt ist.

2. Wie kann ich die erste und letzte Zeile im UsedRange ermitteln? Du kannst die Eigenschaften .Row und .Rows.Count von UsedRange verwenden, um die erste und letzte Zeile zu bestimmen:

Dim ersteZeile As Long
Dim letzteZeile As Long

ersteZeile = ActiveSheet.UsedRange.Row
letzteZeile = ersteZeile + ActiveSheet.UsedRange.Rows.Count - 1

3. Funktioniert UsedRange in allen Excel-Versionen? Ja, UsedRange ist in allen modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016 und 2019.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige