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

Forumthread: dynamische Tabelleninhalte kopieren

dynamische Tabelleninhalte kopieren
12.08.2013 08:05:10
Branch
Hallo,
ich komme leider selbst nicht weiter, daher hoffe ich, dass mir hier im Forum jemand helfen kann.
Problembeschreibung:
Ich möchte über Checkboxen aus dem Formularassistenten entscheiden, welche der 5 Tabellenblätter in das 6. Tabellenblatt in einen definierten Bereich zusammen in eine Tabelle aneinandergereiht werden. Das Problem ist, dass die Tabellen aus den 5 Quellen(Tabellenblätter) dynamisch sind(neue Datensätze bzw. Zeilen hinzu/weg), so dass ich keinen festen Bereich kopieren kann. Im Zieltabellenblatt sollen diese natürlich in einer Tabelle untereinander gereiht erscheinen (ohne Leerzeilen). Die Formatierung der einzelnen Zeilen ist identisch.
Mit der Dynamik in Quelle(n) und Ziel in Verbindung mit den Checkboxen komm ich nicht klar. Kann mir hier jemand helfen?
Gruß
Branch

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamische Tabelleninhalte kopieren
12.08.2013 10:04:21
Beverly
Hi Branch,
vielleicht solltest du deine Mappe mal hochladen, denn so aus dem "hohlen Bauch" heraus macht sich das nicht so gut.


AW: dynamische Tabelleninhalte kopieren
12.08.2013 13:25:14
Beverly
Hi Branch,
schreibe für jede CheckBox einen Code, der den Namen des Tabellenblattes (ich nehme an es sind SF1 bis SF5) in die Tag-Eigenschaft des cmd_OK einträgt, getrennt z.B. durch ";" - nach diesem Prinzip:
Private Sub CB1_Click()
If CB1 Then
cmd_OK.Tag = cmd_OK.Tag & ";SF1"
Else
cmd_OK.Tag = Application.Substitute(cmd_OK.Tag, ";SF1", "")
End If
End Sub
Private Sub CB2_Click()
If CB2 Then
cmd_OK.Tag = cmd_OK.Tag & ";SF2"
Else
cmd_OK.Tag = Application.Substitute(cmd_OK.Tag, ";SF2", "")
End If
End Sub
' usw.....
Wenn du dann den cmd_OK drückst, prüfst du, welche Namen in der Tag-Eigenschaft stehen, indem du sie z.B. in ein Array schreibst. Dann läufst in einer Schleife über dieses Array, ermittelst im betreffenden Tabellenblatt die letzte belegte Zeile in Spalte A ist und kopierst ab Zeile 2 bis zu dieser Zeile in die erste freie Zeile des Tabellenblattes Formular.
https://www.herber.de/bbs/user/86807.xlsm
Übrigens sind es keine Formular-Steuerelemente sondern ActiveX-Steuerelemente auf einem UserForm.


Anzeige
AW: dynamische Tabelleninhalte kopieren
12.08.2013 13:46:47
Branch
Hi Karin,
ist der Hammer, funzt optimal :-) Danke für deine prof. Hilfe. Wünsche dir einen schönen Tag.
LG
Branch
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Tabelleninhalte in Excel kopieren


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Stelle sicher, dass Du die benötigten Tabellenblätter bereits erstellt hast (z.B. SF1 bis SF5) und ein Zielblatt (z.B. Formular), in das Du die Daten kopieren möchtest.

  2. Checkboxen hinzufügen: Füge ActiveX-Checkboxen für jedes Tabellenblatt auf einem UserForm hinzu.

  3. VBA-Code schreiben: Klicke mit der rechten Maustaste auf das UserForm und wähle "Code anzeigen". Füge den folgenden VBA-Code für jede Checkbox ein:

    Private Sub CB1_Click()
       If CB1 Then
           cmd_OK.Tag = cmd_OK.Tag & ";SF1"
       Else
           cmd_OK.Tag = Application.Substitute(cmd_OK.Tag, ";SF1", "")
       End If
    End Sub
    
    Private Sub CB2_Click()
       If CB2 Then
           cmd_OK.Tag = cmd_OK.Tag & ";SF2"
       Else
           cmd_OK.Tag = Application.Substitute(cmd_OK.Tag, ";SF2", "")
       End If
    End Sub
    ' Wiederhole dies für alle Checkboxen
  4. Daten kopieren: Erstelle eine Schleife, die den Tag-Eigenschaft von cmd_OK ausliest und die Daten aus den ausgewählten Tabellenblättern in das Zielblatt kopiert. Nutze dazu den folgenden Beispielcode:

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim targetRow As Long
    Dim arr() As String
    
    arr = Split(cmd_OK.Tag, ";")
    targetRow = 2 ' Setze die Zielzeile
    
    For Each item In arr
       Set ws = ThisWorkbook.Sheets(item)
       lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
       ws.Range("A2:A" & lastRow).Copy Destination:=ThisWorkbook.Sheets("Formular").Cells(targetRow, 1)
       targetRow = targetRow + lastRow - 1 ' Aktualisiere die Zielzeile
    Next item
  5. Testen: Starte das UserForm und teste die Checkboxen. Überprüfe, ob die Daten korrekt in die Ziel-Tabelle kopiert werden.


Häufige Fehler und Lösungen

  • Fehler: Keine Daten werden kopiert
    Lösung: Überprüfe, ob die Checkboxen korrekt verknüpft sind und ob der VBA-Code in der richtigen UserForm geschrieben wurde.

  • Fehler: Unzureichende Berechtigungen
    Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind und Du die erforderlichen Berechtigungen für den Zugriff auf die Arbeitsmappe hast.


Alternative Methoden

Eine alternative Methode zum dynamischen Kopieren von Daten in Excel ist die Verwendung von Power Query. Mit Power Query kannst Du Daten aus mehreren Tabellenblättern zusammenführen und dabei auch dynamische Datenquellen nutzen, ohne VBA verwenden zu müssen.


Praktische Beispiele

  • Beispiel 1: Du hast fünf Tabellenblätter mit Verkaufsdaten und möchtest die Daten in ein zusammenfassendes Blatt importieren. Mit der oben beschriebenen Methode kannst Du gezielt die gewünschten Tabellen auswählen und die Verkaufszahlen dynamisch kopieren.

  • Beispiel 2: Wenn Du eine Excel-Tabelle hast, in der wöchentliche Berichte zusammengefasst werden, kannst Du Checkboxen nutzen, um auszuwählen, welche Berichte in die Gesamtübersicht eingefügt werden sollen.


Tipps für Profis

  • Nutze Datenvalidierung, um sicherzustellen, dass nur gültige Tabellennamen in den Checkboxen verwendet werden.
  • Verwende Fehlerbehandlung im VBA-Code, um mögliche Laufzeitfehler abzufangen und das Skript robuster zu gestalten.
  • Überlege, ob Du die Funktionalität mit Formeln oder Pivot-Tabellen erweitern kannst, um eine noch dynamischere und flexiblere Analyse zu ermöglichen.

FAQ: Häufige Fragen

1. Kann ich diese Methode in Excel 2016 verwenden?
Ja, die beschriebenen Schritte und der VBA-Code sind mit Excel 2016 kompatibel.

2. Was passiert, wenn ich eine Tabelle duplizieren möchte?
Wenn Du eine Tabelle duplizieren möchtest, kannst Du die Funktion "Tabelle duplizieren Excel" nutzen, bevor Du die Daten in das Zielblatt kopierst. Achte darauf, die Formate und Formeln anzupassen, wenn nötig.

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