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

ActiveSheet.ListObjects.Add Range

Forumthread: ActiveSheet.ListObjects.Add Range

ActiveSheet.ListObjects.Add Range
12.06.2023 08:50:58
OFV_Tigier

Ich möchte ein Makro/VBA haben, das mir eine bedingte Formatierung in eine vorhandene einfügt.

Folgender Code funktioniert für mein Demo-Sheet


Application.CutCopyMode = False
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$M$29"), , xlYes).Name = _
        "Tabelle1"
    Range("Tabelle1[#All]").Select
    ActiveSheet.ListObjects("Tabelle1").TableStyle = "TableStyleLight1"


ABER, da die anderen Sheets nicht zwingend mit Zelle M29 enden, benötige ich etwas wie:

    ActiveSheet.ListObjects.Add(xlSrcRange, .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)), , xlYes).Name = _
        "Tabelle1"
    Range("Tabelle1[#All]").Select
    ActiveSheet.ListObjects("Tabelle1").TableStyle = "TableStyleLight1"


Leder laufe ich auf einen Laufzeitfehler 1004, "...entfernen Sie bitte den Autofilter". :(

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveSheet.ListObjects.Add Range
12.06.2023 09:33:22
Rudi Maintaire
Hallo,
    With ActiveSheet
      If .AutoFilter Then .ShowAllData
      .ListObjects.Add(xlSrcRange, .Cells(1, 1).CurrentRegion).Name = _
        "Tabelle1"
      .ListObjects("Tabelle1").TableStyle = "TableStyleLight1"
    End With
Gruß
Rudi


Anzeige
AW: ActiveSheet.ListObjects.Add Range
12.06.2023 10:24:21
OFV_Tigier
Hallo Rudi,

vielen Dank für Deine Antwort.

Leider bekomme ich jetzt einen Laufzeitfehler '438', Objekt unterstützt diese Eigenschaft oder Methode nicht. :(
Eine Idee woran es liegen kann?

Grüße

Tig


AW: ActiveSheet.ListObjects.Add Range
12.06.2023 10:46:50
Rudi Maintaire
Hallo,
mit einer kleinen Korrektur funktioniert das bei mir:
    With ActiveSheet
      If .FilterMode Then .ShowAllData
      .ListObjects.Add(xlSrcRange, .Cells(1, 1).CurrentRegion).Name = _
        "Tabelle1"
      .ListObjects("Tabelle1").TableStyle = "TableStyleLight1"
    End With
Gruß
Rudi


Anzeige
AW: ActiveSheet.ListObjects.Add Range
12.06.2023 11:17:31
OFV_Tigier
Hallo Rudi,

leider bei mir nicht. :(
Wieder 1004:

Zeile:
.ListObjects.Add(xlSrcRange, .Cells(1, 1).CurrentRegion).Name = _
        "Tabelle1"


AW: ActiveSheet.ListObjects.Add Range
12.06.2023 12:07:03
OFV_Tigier
...

Fehler gefunden. :o

Die letzte Spalte hat (warum auch immer) keinen Namen/ist leer (normalerweise sollte Excel doch meckern).
Sobald ich dort etwas eintrage funktioniert das Skript!

Vielen Dank!

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

ActiveSheet.ListObjects.Add in VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

Um eine ListObject in Excel VBA mit ActiveSheet.ListObjects.Add zu erstellen, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projekt-Explorer auf VBAProject (dein Arbeitsbuch), wähle Einfügen und dann Modul.

  3. Gib den folgenden Code ein:

    Sub CreateListObject()
       Dim ws As Worksheet
       Set ws = ActiveSheet
    
       With ws
           If .FilterMode Then .ShowAllData
           .ListObjects.Add(xlSrcRange, .Cells(1, 1).CurrentRegion).Name = "Tabelle1"
           .ListObjects("Tabelle1").TableStyle = "TableStyleLight1"
       End With
    End Sub
  4. Führe das Makro aus: Drücke F5 oder klicke auf Ausführen.

Mit diesem Code wird ein ListObject erstellt, das den gesamten aktuellen Bereich der aktiven Tabelle umfasst.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn ein AutoFilter aktiv ist. Du kannst dies lösen, indem Du sicherstellst, dass der AutoFilter deaktiviert ist, bevor Du das ListObject hinzufügst:

    If .FilterMode Then .ShowAllData
  • Laufzeitfehler 438: Dieser Fehler kann angezeigt werden, wenn Du eine Methode oder Eigenschaft verwendest, die nicht unterstützt wird. Stelle sicher, dass Du die richtigen Objekte und Methoden verwendest. Überprüfe auch den Code auf Tippfehler.

  • Leere letzte Spalte: Ein häufiger Fehler ist, dass die letzte Spalte im verwendeten Bereich leer ist. Stelle sicher, dass jede Spalte in Deinem Bereich Daten enthält.


Alternative Methoden

Falls Du einen dynamischen Bereich benötigst, der sich automatisch anpasst, kannst Du den folgenden Code verwenden, um den Bereich mit .Cells zu definieren:

ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)), , xlYes).Name = "Tabelle1"

Diese Methode verwendet Cells und End(xlUp), um den letzten verwendeten Zellbereich zu identifizieren.


Praktische Beispiele

  1. Einfaches ListObject erstellen:

    Sub CreateSimpleListObject()
       ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.Range("A1:D10"), , xlYes).Name = "BeispielTabelle"
    End Sub
  2. ListObject mit Autofilter:

    Sub CreateListObjectWithFilter()
       With ActiveSheet
           If .FilterMode Then .ShowAllData
           .ListObjects.Add(xlSrcRange, .Range("A1").CurrentRegion, , xlYes).Name = "GefilterteTabelle"
           .ListObjects("GefilterteTabelle").TableStyle = "TableStyleMedium9"
       End With
    End Sub

Tipps für Profis

  • Namen der ListObjects: Achte darauf, dass der Name des ListObjects einzigartig ist, um Konflikte zu vermeiden.
  • VBA Range kombinieren: Du kannst mehrere Bereiche kombinieren, indem Du Union verwendest, um komplexere Tabellen zu erstellen.
  • Tabelle formatieren: Verwende die TableStyle-Eigenschaft, um das Aussehen der Tabelle schnell zu ändern.

FAQ: Häufige Fragen

1. Was ist ein ListObject in Excel VBA?
Ein ListObject ist eine Excel-Tabelle, die sich dynamisch anpassen kann und verschiedene Funktionen wie Sortierung und Filterung unterstützt.

2. Wie kann ich den Bereich für das ListObject dynamisch anpassen?
Verwende Cells in Kombination mit .End(xlUp), um den letzten verwendeten Bereich zu identifizieren, anstatt einen festen Bereich anzugeben.

3. Was tun bei Laufzeitfehlern?
Überprüfe die Bedingungen wie aktive Filter und stelle sicher, dass alle Spalten im angegebenen Bereich Daten enthalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige