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

Resize ListObject

Forumthread: Resize ListObject

Resize ListObject
27.10.2020 13:39:53
Sven
Hallo zusammen,
ich habe ein ListObject über die Spalten A bis C und hänge vorne eine Spalte dran. Dann geht das ListObject also von B bis D. Diese neue Spalte möchte ich in das ListObjact integrieren:
With ThisWorkbook.Worksheets("DWH").ListObjects("Abfrage_FR")
.ShowAutoFilterDropDown = False
.Resize Range("$A$1:$D" & lonZeilen)
.ShowAutoFilterDropDown = True
End With
Das klappt auch. Aber: Wenn ich jetzt nicht weiß, dass das ursprüngliche ListObject drei Spalten breit ist und ich auch für breitere gewappnet sein möchte, wie mache ich das, damit D nicht fest im Code steht? Das vorne eine Spalte angefügt wird ist hingegen unveränderlich.
Danke und Grüße
Sven
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Resize ListObject
27.10.2020 13:49:02
Rudi
Hallo,
.Resize Range(cells(1,1),cells(lonZeilen, .databodyrange.columns.count+1))
Gruß
Rudi
AW: Resize ListObject
27.10.2020 13:56:22
Sven
Super, vielen Dank Rudi!
Anzeige
;
Anzeige

Infobox / Tutorial

ListObject in Excel dynamisch anpassen


Schritt-für-Schritt-Anleitung

Um ein ListObject in Excel VBA dynamisch zu resize, kannst Du die .Resize-Methode verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie Du dies umsetzen kannst:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Finde das richtige Arbeitsblatt: Stelle sicher, dass Du im richtigen Arbeitsblatt arbeitest, in dem sich Dein ListObject befindet.
  3. Verwende folgenden VBA-Code:

    With ThisWorkbook.Worksheets("DWH").ListObjects("Abfrage_FR")
       .ShowAutoFilterDropDown = False
       .Resize Range(Cells(1, 1), Cells(lonZeilen, .databodyrange.Columns.Count + 1))
       .ShowAutoFilterDropDown = True
    End With

    In diesem Code wird die Größe des ListObjects angepasst, sodass die Anzahl der Spalten automatisch erkannt wird.


Häufige Fehler und Lösungen

  • Fehler: „Objektvariable nicht festgelegt“

    • Lösung: Überprüfe, ob der Name des ListObjects korrekt ist und dass es sich im richtigen Arbeitsblatt befindet.
  • Fehler: „Index außerhalb des Bereichs“

    • Lösung: Stelle sicher, dass die Variable lonZeilen eine gültige Zeilenanzahl hat. Du kannst sie mit lonZeilen = ThisWorkbook.Worksheets("DWH").Cells(Rows.Count, 1).End(xlUp).Row setzen.

Alternative Methoden

Eine weitere Möglichkeit, ein ListObject zu resize, ist die Verwendung von ListObject.Resize:

Dim lo As ListObject
Set lo = ThisWorkbook.Worksheets("DWH").ListObjects("Abfrage_FR")
lo.Resize lo.Range.Resize(lonZeilen, lo.ListColumns.Count + 1)

Diese Methode ist einfach und funktioniert ähnlich wie die vorherige, jedoch wird hier direkt auf die ListObject-Eigenschaft zugegriffen.


Praktische Beispiele

Hier sind einige praktische Szenarien, in denen die .Resize-Methode nützlich sein kann:

  • Daten aus einer externen Quelle importieren: Wenn Du Daten aus einer Datenbank importierst und die Anzahl der Spalten variabel ist.
  • Dynamische Berichte erstellen: Bei wöchentlichen oder monatlichen Berichten, wo sich die Struktur regelmäßig ändert.

Tipps für Profis

  • Verwende Variablen für Bereiche: Anstatt fest kodierte Werte zu verwenden, definiere Variablen für Zeilen und Spalten, um Deinen Code flexibler zu gestalten.

  • Fehlerbehandlung einbauen: Implementiere eine Fehlerbehandlung, damit Dein Code auch bei unerwarteten Änderungen in der Datenstruktur robust bleibt.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der aktuellen Spalten in einem ListObject ermitteln?
Du kannst dies mit .databodyrange.Columns.Count tun, um die Anzahl der Spalten im Datenbereich des ListObjects zu erhalten.

2. Was passiert, wenn ich nicht die richtige Anzahl an Zeilen angebe?
Wenn die Anzahl der Zeilen nicht korrekt ist, kann es zu einem Laufzeitfehler kommen. Stelle sicher, dass Deine Variablen ordnungsgemäß gesetzt sind, bevor Du den Resize-Befehl ausführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige