Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ListObjects mit Namen

Forumthread: ListObjects mit Namen

ListObjects mit Namen
20.06.2016 19:19:45
Andi
Hallo,
Ich brauche von euch mal wieder Hilfe
ich habe einen Code der mir eine Tabelle kopiert und von einer Zelle den Namen automatisch benennt.
Jetzt möchte ich nach dem Kopieren der Tabelle, eine Tabellenkonvertierung mit den Namen der aktiven Tabelle.
bekomme aber eine Fehlermeldung
Für euch sicherlich kein Problem:
Danke im vorraus!
Gruß Andi
Hier ein Teil vom Code
With ActiveSheet
Range("S1").Value = "Gesamt"
.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row - 1).FormulaLocal = "=Summe(G2:R2)"
.ListObjects.Add
.ListObjects ("tbl_" & ActiveSheet.Name)
End With

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
noch aktuell?
26.06.2016 17:32:53
Michael
Hi,
ein With ActiveSheet kann man sich schenken: mit welchem Blatt sonst?
Aber wenn schon With, dann paß bitte auf, wo Punkte stehen sollen, nämlich u.a. vor dem Range("S1") und insbesondere vor den beiden columns/rows.count.
So sollte es gehen:
Option Explicit
Sub summen()
Range("S1").Value = "Gesamt"
Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1). _
Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1).FormulaLocal = _
"=Summe(G2:R2)"
With ActiveSheet
.ListObjects.Add
.ListObjects(.ListObjects.Count).Name = "tbl_" & .Name & .ListObjects.Count
End With
End Sub
Wenn "Gesamt" sowieso in Spalte S steht, wieso dann die ganze Rechnerei?
Schöne Grüße,
Michael
Anzeige
;
Anzeige

Infobox / Tutorial

ListObjects mit Namen in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um ListObjects in Excel VBA zu verwenden und ihnen dynamisch Namen zuzuweisen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.
  3. Kopiere den folgenden Code in das Modul:
Option Explicit
Sub summen()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ws.Range("S1").Value = "Gesamt"
    ws.Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1). _
        Resize(ws.Cells(Rows.Count, 1).End(xlUp).Row - 1).FormulaLocal = _
        "=Summe(G2:R2)"

    ws.ListObjects.Add(xlSrcRange, ws.Range("A1").CurrentRegion, , xlYes).Name = "tbl_" & ws.Name & "_" & ws.ListObjects.Count
End Sub
  1. Passe den Code nach deinen Bedürfnissen an und führe das Makro aus, um die Tabelle zu erstellen.

Häufige Fehler und Lösungen

Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt"
Dieser Fehler tritt auf, wenn du versuchst, auf ListObjects zuzugreifen, bevor das Arbeitsblatt korrekt definiert ist. Stelle sicher, dass du das Arbeitsblatt in einer Variable speicherst, bevor du darauf zugreifst, wie im obigen Beispiel.

Lösung:
Verwende Set ws = ActiveSheet, um sicherzustellen, dass du auf das aktive Arbeitsblatt verweist.

Fehler: "Name ist bereits vorhanden"
Wenn du versuchst, einen ListObject mit einem Namen zu erstellen, der bereits existiert, erhältst du diesen Fehler.

Lösung:
Füge eine Zählvariable hinzu, um sicherzustellen, dass jeder ListObject einen einzigartigen Namen erhält, wie im Beispiel:

.Name = "tbl_" & ws.Name & "_" & ws.ListObjects.Count

Alternative Methoden

Eine alternative Methode zur Erstellung von ListObjects ist die Verwendung von Range-Objekten. Du kannst die ListObjects auch manuell erstellen, indem du einen Bereich auswählst und dann ListObjects.Add verwendest:

Dim tbl As ListObject
Set tbl = ws.ListObjects.Add(xlSrcRange, ws.Range("A1:C10"), , xlYes)
tbl.Name = "tbl_" & ws.Name

Diese Methode ist nützlich, wenn du bereits einen definierten Bereich hast, den du in ein ListObject umwandeln möchtest.


Praktische Beispiele

Hier sind einige Beispiele, wie du ListObjects effektiv in Excel VBA nutzen kannst:

  1. Erstellen eines ListObject aus einem definierten Bereich:
ws.ListObjects.Add(xlSrcRange, ws.Range("A1:B10"), , xlYes).Name = "tbl_Daten"
  1. Daten aus einer externen Quelle in ein ListObject importieren:
Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
conn.Open "DeineVerbindungszeichenfolge"
ws.ListObjects.Add(xlSrcExternal, conn, True, True)

Tipps für Profis

  • Nutze ListObjects zur einfachen Erstellung von Pivot-Tabellen und zur Analyse großer Datenmengen.
  • Achte darauf, dass du die Namen deiner ListObjects klar und konsistent hältst, um die Wartung zu erleichtern.
  • Verwende die ListObjects-Eigenschaft TableStyle für eine ansprechende Formatierung deiner Tabellen.

FAQ: Häufige Fragen

1. Wie kann ich den Namen eines bestehenden ListObject ändern?
Du kannst den Namen eines bestehenden ListObject mit folgendem Code ändern:

ActiveSheet.ListObjects(1).Name = "NeuerName"

2. Wie kann ich auf die Daten eines ListObject zugreifen?
Du kannst auf die Daten eines ListObject zugreifen, indem du die DataBodyRange-Eigenschaft verwendest:

Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1)
MsgBox tbl.DataBodyRange.Cells(1, 1).Value

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