Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: UsedRange bei VBA

UsedRange bei VBA
28.10.2003 13:45:59
Ben
Hallo,

ich habe folgendes Problem: Nehmen wir an, in einem Excel-Arbeitsblatt sind die Zellen A5:A7 mit Werten gefüllt, ebenso die Zellen C1:C20.

Wenn ich nun per VBA-Code den beschriebenen Bereich in Spalte A ermitteln möchte und dafür "UsedRange" verwende:

ActiveSheet.UsedRange.Columns(1).Address ,

dann erhalte ich nicht als Ergebnis:

$A$5:$A$7, sondern vielmehr

$A$1:$A$20.

Mit welchem Code kann ich den tatsächlich beschriebenen Bereich einer einzigen Spalte (z.B. A) ermitteln - ungeachtet der beschriebenen Bereiche in anderen Spalten?

Im Voraus vielen Dank für Eure Hilfe!

Viele Grüße

Ben.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UsedRange bei VBA
28.10.2003 13:49:28
ChrisL
Hi Ben

MsgBox Range(Range("A1").End(xlDown), Range("A65536").End(xlUp)).Address

Gruss
Chris
AW: UsedRange bei VBA
28.10.2003 13:53:59
WernerB.
Hallo Ben,

mit
Cells(Rows.Count, 1).End(xlUp).Row

ermittelst Du die letzte Zelle mit Inhalt (auch unsichtbarem Inhalt!) in der Spalte "A".
Die 1 steht Für Spalte "A", für Spalte wäre das die 2, usw.


Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Anzeige
AW: UsedRange bei VBA
28.10.2003 14:17:58
andre
hallo ben,

bei den beiden lösungen wäre nur noch hinzuzufügen, dass die zelle 65536 leer sein sollte. wenn z.b. diene daten von a64000 bis a65536 gehen dann bekommst du mit ...xlup... die 64000 statt der 65536.
... aber wer hat schon so viele daten ...

gruss andre
AW: UsedRange bei VBA
28.10.2003 15:23:39
Ben
Hallo Ihr Drei,

herzlichen Dank für Eure Antwort!

Besonders gut gefällt mir der Tip mit der letzten beschriebenen Zeile einer Spalte - denn genau die brauche ich. Vorher habe ich mir diese Endzeile mühsam aus der Address-Angabe rausgelesen.

Für Euch weiterhin alles Gute. Ciao, viele Grüße

Ben.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Verwendung von UsedRange in Excel VBA


Schritt-für-Schritt-Anleitung

Um den tatsächlich beschriebenen Bereich einer bestimmten Spalte in Excel VBA zu ermitteln, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor in Excel (Alt + F11).

  2. Erstelle ein neues Modul über "Einfügen" > "Modul".

  3. Füge den folgenden Code ein, um den beschriebenen Bereich in Spalte A zu ermitteln:

    Sub GetUsedRangeInColumnA()
       Dim lastRow As Long
       lastRow = Cells(Rows.Count, 1).End(xlUp).Row
       MsgBox Range("A1", Cells(lastRow, 1)).Address
    End Sub
  4. Führe das Makro aus, um die Adresse des benutzten Bereichs in Spalte A anzuzeigen.

Mit diesem Code wird der Bereich von A1 bis zur letzten benutzten Zelle in Spalte A ermittelt, unabhängig von den Werten in anderen Spalten.


Häufige Fehler und Lösungen

  • Problem: Der Code zeigt die falsche Adresse an, z.B. $A$1:$A$20.

    • Lösung: Stelle sicher, dass die Zelle am Ende der Spalte (z.B. A65536) leer ist. Wenn dort Werte stehen, könnte dies die Ermittlung des tatsächlich genutzten Bereichs beeinträchtigen.
  • Problem: Fehlermeldung bei der Ausführung des Makros.

    • Lösung: Überprüfe, ob Du die richtigen Verweise in Deinem VBA-Projekt gesetzt hast und ob es eventuell Konflikte mit anderen Makros gibt.

Alternative Methoden

Wenn Du nach weiteren Möglichkeiten suchst, den benutzten Bereich in einer Spalte zu ermitteln, probiere folgende Ansätze:

  1. Verwende .UsedRange:

    MsgBox ActiveSheet.UsedRange.Address

    Beachte, dass dies den gesamten benutzten Bereich des Arbeitsblattes zurückgibt und nicht auf eine einzelne Spalte beschränkt ist.

  2. VBA Range-Objekt nutzen:

    Dim rng As Range
    Set rng = Range("A1", Range("A1").End(xlDown))
    MsgBox rng.Address

Praktische Beispiele

Hier sind einige praktische Anwendungsmöglichkeiten für den UsedRange in VBA:

  • Ermitteln des benutzten Bereichs in Spalte B:

    Sub GetUsedRangeInColumnB()
       Dim lastRow As Long
       lastRow = Cells(Rows.Count, 2).End(xlUp).Row
       MsgBox Range("B1", Cells(lastRow, 2)).Address
    End Sub
  • Anzeigen der Werte im benutzten Bereich:

    Sub ShowUsedRangeValues()
       Dim rng As Range
       Set rng = ActiveSheet.UsedRange
       MsgBox "Benutzte Werte: " & rng.Value
    End Sub

Tipps für Profis

  • Verwende With-Anweisungen, um den Code leserlicher zu gestalten:

    With ActiveSheet.UsedRange
       MsgBox .Address
    End With
  • Optimiere die Performance, indem Du die Bildschirmaktualisierung während der Ausführung von Makros deaktivierst:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Frage
Wie kann ich den benutzten Bereich für mehrere Spalten gleichzeitig ermitteln?
Antwort: Du kannst eine Schleife verwenden, um die benutzten Bereiche für jede Spalte zu ermitteln und die Adressen in einer MsgBox anzuzeigen.

2. Frage
Was passiert, wenn ich die .UsedRange-Eigenschaft auf ein leeres Arbeitsblatt anwende?
Antwort: Die .UsedRange-Eigenschaft gibt in diesem Fall den Bereich von A1 zurück und zeigt an, dass nichts verwendet wird. Es ist wichtig, immer die Struktur Deines Blattes zu überprüfen.

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