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

Forumthread: VBA: Intelligente Tabelle kopieren

VBA: Intelligente Tabelle kopieren
29.01.2021 12:23:54
Leo
Hallo,
ich habe leider folgendes Problem
Ich möchte die Spalte einer Intelligenten Tabelle mit seinem Namen ansprechen (keinem Index)
um es in ein anderes Tabellenblatt zu kopieren.
Wie mach ich das
Sheets("Auswahl").Range("A1:F15").Value = Sheets("MP2").ListObjects(1).DataBodyRange.Value
So kopier ich die ganze Tabelle rein.
Ich möchte jedoch nur die eine Spalte auf dem MP2 Blatt mit dem Namen Korrektur
in die Spalte D1-D15 in das Blatt Auswahl kopieren.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Intelligente Tabelle kopieren
29.01.2021 12:33:30
ralf_b
Sheets("MP2").ListObjects(1).Listcolumns("xy").DataBodyRange.Value
AW: VBA: Intelligente Tabelle kopieren
29.01.2021 12:59:08
Leo
Hey,
weißt du eventuell auch
ob es so klappt
Sheets("Auswahl ").ListObjects("Tabelle5").ListColumns("Korrektur").DataBodyRange.Value = Sheets("MP2").ListObjects("Tabelle02").ListColumns("H280").DataBodyRange.Value
Ich bekomm immer eine Fehlermeldung : " Index außerhalb des definierten Bereichs"
Anzeige
AW: VBA: Intelligente Tabelle kopieren
29.01.2021 13:08:00
ralf_b
1. https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables
2. der Fehler deutet auf einen Unterschied der Datenbereiche hin. oder so ähnlich.
lass das Value weg und schaue ob du das Range oder cells objekt in der Listcolumn oder der databodyrange zur Verfügung gestellt bekommst. Punkt hinter object. Intellisense gibt dir an was du zur Verfügung hast.
Aber ich probiere da auch nur rum.
gruß
rb
Anzeige
AW: VBA: Intelligente Tabelle kopieren
29.01.2021 14:45:48
Leo
Hey bin und bleibe Leo:)
Also Danke erstmal
aber ich komm nicht weiter deshalb mein anderer Post.
Ich hab viele Varianten versucht jedoch bekomme ich fast immer die selbe Fehlermeldung.
Muss ein Makro fertigstellen bis Montag und brauche dringend Hilfe.
Ps.: Dachte Mädchen werden eventuell eher geholfen
Anzeige
Sheets("Auswahl ")
29.01.2021 14:44:21
RPP63
Oben hieß das Blatt noch Sheets("Auswahl") und nicht Sheets("Auswahl ")
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA für das Kopieren von Daten aus einer intelligenten Tabelle


Schritt-für-Schritt-Anleitung

Um eine Spalte aus einer intelligenten Tabelle in ein anderes Blatt zu kopieren, kannst du die folgenden Schritte befolgen:

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

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" > Einfügen > Modul.

  3. Gib den folgenden Code ein:

    Sub KopiereIntelligenteTabelle()
       Dim wsQuell As Worksheet
       Dim wsZiel As Worksheet
       Dim spalte As ListColumn
    
       Set wsQuell = Sheets("MP2")
       Set wsZiel = Sheets("Auswahl")
    
       ' Ansprechen der intelligenten Tabelle
       Set spalte = wsQuell.ListObjects("Tabelle02").ListColumns("Korrektur")
    
       ' Kopieren der Daten in die Zielspalte
       wsZiel.Range("D1").Resize(spalte.DataBodyRange.Rows.Count, 1).Value = spalte.DataBodyRange.Value
    End Sub
  4. Führe das Makro aus: Drücke F5 oder klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehlermeldung: "Index außerhalb des definierten Bereichs"
    Diese Fehlermeldung tritt häufig auf, wenn der Name der Tabelle oder der Spalte nicht korrekt ist. Stelle sicher, dass du die richtigen Namen verwendest.

  • Whitespace im Blattnamen
    Achte darauf, dass der Blattname genau übereinstimmt, auch Leerzeichen können Probleme verursachen. Beispielsweise sollte Sheets("Auswahl") nicht Sheets("Auswahl ") sein.

  • Fehler bei der Verwendung von .Value
    Wenn du .Value verwendest, kann der Code manchmal nicht das richtige Objekt ansprechen. Versuche, .Range oder .Cells zu verwenden, um auf die Daten zuzugreifen.


Alternative Methoden

Eine alternative Methode zum Kopieren aus einer intelligenten Tabelle könnte die Verwendung von Copy und PasteSpecial sein. Hier ein Beispiel:

Sub KopiereMitPasteSpecial()
    Dim wsQuell As Worksheet
    Dim wsZiel As Worksheet

    Set wsQuell = Sheets("MP2")
    Set wsZiel = Sheets("Auswahl")

    ' Kopiere die Spalte
    wsQuell.ListObjects("Tabelle02").ListColumns("Korrektur").DataBodyRange.Copy
    wsZiel.Range("D1").PasteSpecial Paste:=xlPasteValues
End Sub

Praktische Beispiele

  • Kopieren einer Spalte mit VBA:
    Du kannst den Code anpassen, um verschiedene Spalten zu kopieren, indem du einfach den Namen der Spalte in ListColumns("Spaltenname") änderst.

  • Dynamisches Kopieren:
    Um die Spalte dynamisch zu kopieren, könntest du eine InputBox verwenden, um den Spaltennamen zur Laufzeit abzufragen.

Sub DynamischesKopieren()
    Dim wsQuell As Worksheet
    Dim wsZiel As Worksheet
    Dim spaltenname As String
    Dim spalte As ListColumn

    Set wsQuell = Sheets("MP2")
    Set wsZiel = Sheets("Auswahl")

    spaltenname = InputBox("Bitte gib den Namen der Spalte ein:")
    Set spalte = wsQuell.ListObjects("Tabelle02").ListColumns(spaltenname)

    wsZiel.Range("D1").Resize(spalte.DataBodyRange.Rows.Count, 1).Value = spalte.DataBodyRange.Value
End Sub

Tipps für Profis

  • Verwende databodyrange: Nutze die DataBodyRange, um nur die Daten ohne Überschriften zu kopieren. Dies ist besonders nützlich, wenn du nur die Werte benötigst.

  • Fehlersuche mit Intellisense: Wenn du mit VBA arbeitest, nutze Intellisense, um sicherzustellen, dass du die richtigen Methoden und Eigenschaften verwendest. Dies hilft, häufige Fehler zu vermeiden.

  • Dokumentation: Halte dich an die offizielle Microsoft-Dokumentation für ListObjects und ListColumns, um die Funktionen besser zu verstehen.


FAQ: Häufige Fragen

1. Wie spreche ich eine intelligente Tabelle in VBA an?
Du kannst eine intelligente Tabelle mit Sheets("DeinBlatt").ListObjects("DeinTabellenname") ansprechen.

2. Was ist der Unterschied zwischen .Value und .DataBodyRange?
.Value gibt dir die Werte der Zellen zurück, während .DataBodyRange den Bereich der Daten in der Tabelle darstellt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige