Als Tabelle formatieren, unbekannte Zeilenanzahl
Schönen guten Abend,
schreibe gerade ein kleines Makro, welches ein Worksheet als Tabelle formatieren soll (um anschließend als Pivot verwendet zu werden), natürlich nur den Bereich mit Inhalt.
Da die Zeilenanzahl variabel ist, kann ich keinen festen Bereich definieren.
Meine Tabelle geht über die Spalten A bis X, hat keine Überschriften und startet in Zeile 2.
Mein Code:
Sub AlsTabelle()
Sheets("010").ListObjects.Add(xlSrcRange, Range("A2:X" & Cells(1, 1).End(xlDown).Row), , xlNo).Name = _
"Tabelle1"
End Sub
Den Part mit der Range habe ich aus dem Netz, und komme nicht so richtig mit klar was ich genau eintragen muss. Finde dazu leider auch keine Erklärung im Netz.
Bislang habe ich entweder das ganze Tabellenblatt (also zig tausend Zeilen), oder nur einzelne Zeilen als Tabelle formatiert bekommen.
Kann mir jemand von euch helfen? Was muss ich statt "Cells(1, 1)" schreiben, und warum?
Viele Grüße,
Victorianer
schreibe gerade ein kleines Makro, welches ein Worksheet als Tabelle formatieren soll (um anschließend als Pivot verwendet zu werden), natürlich nur den Bereich mit Inhalt.
Da die Zeilenanzahl variabel ist, kann ich keinen festen Bereich definieren.
Meine Tabelle geht über die Spalten A bis X, hat keine Überschriften und startet in Zeile 2.
Mein Code:
Sub AlsTabelle()
Sheets("010").ListObjects.Add(xlSrcRange, Range("A2:X" & Cells(1, 1).End(xlDown).Row), , xlNo).Name = _
"Tabelle1"
End Sub
Den Part mit der Range habe ich aus dem Netz, und komme nicht so richtig mit klar was ich genau eintragen muss. Finde dazu leider auch keine Erklärung im Netz.
Bislang habe ich entweder das ganze Tabellenblatt (also zig tausend Zeilen), oder nur einzelne Zeilen als Tabelle formatiert bekommen.
Kann mir jemand von euch helfen? Was muss ich statt "Cells(1, 1)" schreiben, und warum?
Viele Grüße,
Victorianer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 215998
Url: https://administrator.de/contentid/215998
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo Victorianer,
So sollte es funktionieren, A65536 gibt die maximale Zeilenanzahl an in Spalte A.
Bei Excel > 2007 ist die maximale Zeilelanzahl größer 1 Million, bitte entsprechend anpassen.
Dann "sucht" sich Excel die letze Zeile und formitiert dir die Tabelle entsprechend.
Gruß
Xolger
Sub AlsTabelle()
Sheets("010").ListObjects.Add(xlSrcRange, Range("A2:X" & Range("A65536").End(xlUp).Row), , xlNo).Name = _
"Tabelle1"
End Sub
So sollte es funktionieren, A65536 gibt die maximale Zeilenanzahl an in Spalte A.
Bei Excel > 2007 ist die maximale Zeilelanzahl größer 1 Million, bitte entsprechend anpassen.
Dann "sucht" sich Excel die letze Zeile und formitiert dir die Tabelle entsprechend.
Gruß
Xolger
Hi,
wenn du mit Usedrange arbeitest kann es passieren, dass du mehr formatierst als du wolltest, wenn z.B. in Zeilen 1-40 was steht und dann nochmal in Zeile 6000 dann wird von 1-6000 bearbeitet.
Grüße
Exze
wenn du mit Usedrange arbeitest kann es passieren, dass du mehr formatierst als du wolltest, wenn z.B. in Zeilen 1-40 was steht und dann nochmal in Zeile 6000 dann wird von 1-6000 bearbeitet.
Grüße
Exze
Hi,
du meinst das Blatt komplett zu löschen ?
Range("A1":"IV65536").Clear
wenn ich mich richtig erinnere. Musst vielleicht bisschen rumprobieren.
Grüße
Exze
du meinst das Blatt komplett zu löschen ?
Range("A1":"IV65536").Clear
wenn ich mich richtig erinnere. Musst vielleicht bisschen rumprobieren.
Grüße
Exze
Hallo Victorianer,
folgender Code sollte gehen, aber du musst beachten das Excel zum suchen der letzten Zeile deiner Daten in Spalte A nach einer Zelle sucht die Inhalt hat, wenn z.B. dein Datenbereich 30 Zeilen hat, aber in Spalte A nur bis Zeile 5 Daten stehen nimmt Excel diese Zeile als unterste Zeile für die entstandene Tabelle.
Grüße Uwe
folgender Code sollte gehen, aber du musst beachten das Excel zum suchen der letzten Zeile deiner Daten in Spalte A nach einer Zelle sucht die Inhalt hat, wenn z.B. dein Datenbereich 30 Zeilen hat, aber in Spalte A nur bis Zeile 5 Daten stehen nimmt Excel diese Zeile als unterste Zeile für die entstandene Tabelle.
Dim rangeSource As Range, table As ListObject
Set rangeSource = Range("A2", Range("A65536").End(xlUp).Offset(0, 23))
Set table = ActiveSheet.ListObjects.Add(xlSrcRange, rangeSource)
Grüße Uwe
Hallo victorianer!
Bei Verwendung der End()-Funktionen sind ein paar Besonderheiten zu beachten, die sich nicht ganz so einfach erklären lassen...
Sofern sichergestellt ist, dass Dein Tabellenbereich von Leerzellen umgeben ist z.B. Zeile 1 = Leer und X = Letzte Spalte, dann wäre dies für Deine Zwecke geeigneter:
Allerdings muss sich im Tabellenbereich von A2:X?, in den einzelnen Spalten mindestens eine Zelle mit Inhalt befinden d.h. CurrentRegion steht für zusammenhängende Zell-Blöcke.
Löschen aller Zellen geht z.B. mit:
Löschen aller Zell-Formate geht z.B. mit:
Gruß Dieter
Bei Verwendung der End()-Funktionen sind ein paar Besonderheiten zu beachten, die sich nicht ganz so einfach erklären lassen...
Sofern sichergestellt ist, dass Dein Tabellenbereich von Leerzellen umgeben ist z.B. Zeile 1 = Leer und X = Letzte Spalte, dann wäre dies für Deine Zwecke geeigneter:
With Sheets("010")
.ListObjects.Add(xlSrcRange, .Range("A2").CurrentRegion, , xlNo).Name="Tabelle1"
End With
Löschen aller Zellen geht z.B. mit:
Sheets("010").UsedRange.Clear
'oder
Sheets("010").Cells.Clear
Löschen aller Zell-Formate geht z.B. mit:
Sheets("010").UsedRange.ClearFormats
'oder
Sheets("010").Cells.ClearFormats
Gruß Dieter