Excel 2000/2003: Wie kann ich aktiv über VBA den Range einer Tabelle akualisieren?

lunov

Grünschnabel
Ich habe folgendes Problem:

In einer Tabelle kann man mit STR+Pos1 auf das erste Feld und mit STR + ENDE auf das letzte bekannte Feld der Tabelle (Blatt) springen (analoge Funktionen sind auch über VBA durchführbar).

Lösche ich in einem zusammenhängenden Bereich (Datenliste) eine Zeile und führe danach wieder den Befehl ROWS.COUNT oder etwa manuell STR+ ENDE aus, so bleibt der Zeilenzähler auf dem alten Wert vor dem Löschen, der Cursor steht also nun in einem "leeren" Feld der Folgezeile (analog auch mit Spalten).

Will man nun einen neuen Datensatz "nahtlos" an den bestehenden Tabellenbereich anfügen, so wird dieser nach der Leerzeile eingefügt. Auch ein Speichern und Neuladen der Tabelle nach einem Excel-Neustart verändert nichts an der Situation.

Was kann ich als User über die Tastatur bzw. Makros tun, um Excel dazu zu bewegen, sich das neue letzte Feld eines zusammenhängenden Bereichs zu merken, ohne dass ich dies über eine aufwändige Namensgebung steuere?

Hat da jemand eine Idee dazu?

LG Lunov
 
Hi

diese Zeile:
Code:
        lz = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
findet die letzte beschriebene Zeile.
Es ist eine weile her wo ich die Funktion so angewendet habe, aber ich glaube das Ergebnis wurde verfälscht wenn in der Abfragespalte leere Zellen drin waren. Dies sollte aber bei DATENsätzen nicht der Fall sein :)

Gruß DD
 
Hallo lunov,

schau dir mal die VBA-Funktion UsedRange an.
  • ErsteZeile = UsedRange.Row
  • AnzahlZeilenNachErsterZeile = UsedRange.Rows.Count
  • Datenbereich = UsedRange.Address
UsedRange.Select zeigt dir den Datenbereich.

Besonders das Address - Argument ist ideal auszuwerten!
 
Zurück