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

Forumthread: VBA Tabelle Kopieren und Einfügen

VBA Tabelle Kopieren und Einfügen
24.09.2016 11:03:55
D.
Wie bekomme es jetzt hin, das der Tabelleninhalt der "Tabelle1" in die hier erzeugte Tabelle ""Originalkopie" 1:1 eingefügt wird?
Folgendes Modul entspricht meinen Erwartungen- jedoch fehlt noch der Befehl Kopieren.
Nach dem Ausführen sollte aber die "Tabelle1" Aktiv bleiben.
Kann wer Nachhilfe geben?
Sub Kopie_Tabelle1()
'** neues Blatt Anlegen
Dim blatt As Object
Dim BlattName As String
Dim bloFlg As Boolean
'** Blattname festlegen
BlattName = "Originalkopie"
'** Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
'** Nur einfügen, wenn Blatt noch nicht vorhanden ist
For Each blatt In Sheets
If blatt.Name = BlattName Then bolflg = True
Next blatt
'** Blatt nur einfügen, wenn noch nicht vorhanden
If bolflg = False Then
With ThisWorkbook
.Sheets.Add After:=Sheets(Worksheets.Count)
.ActiveSheet.Name = "Originalkopie"
End With
End If
End Sub

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nur eine Vermutung ...
24.09.2016 13:44:17
Matthias
Hallo
Vielleich will Dir ja im Moment keiner helfen.
Wenn man nicht mal "Hallo" sagen/schreiben kann wundert mich das nicht.
Mit einem Gruß am Ende kommt eine Hilfesuchender ebenfalls symphatischer an.
Warum machst Du einen neuen Thread auf
https://www.herber.de/forum/messages/1516074.html
Übrigens:
Ein anderer Name als nur D. wäre sicherlich auch für Dich günstiger.
Denn dann kannst Du in der Listen-Suche besser nach Deinen Beiträgen suchen.
So kommen viel zu viele Beiträge wenn mann nur nach D. suchen/filtern will.
Ich lass den Beitrag trotzdem offen.
Gruß Matthias
Anzeige
AW: nur eine Vermutung ...
24.09.2016 14:24:36
Andreas
Hallo Matthias,
danke für die Belehrung- hab in der Eile die Formalitäten vergessen. Habe mich mit D registriert- war dann wohl ein Fehler. habe mir darüber auch nicht ganz so die Gedanken gemacht. Egal
Den Namen kannst Du ja beliebig wählen
24.09.2016 15:01:46
Matthias
Hallo Andreas,
den Namen kannst Du ja beliebig wählen
registriert bist Du über Deine Email-Adresse.
Das hast Du ja nun schon bemerkt ;-)
Ich lass offen
Gruß Matthias
Anzeige
AW: Den Namen kannst Du ja beliebig wählen
24.09.2016 15:32:06
Andreas
Hallo Matthias
danke hab ich soeben gemacht- wusste ja nicht das das so wichtig ist- aber hast recht - es gehört sich nicht. Die Helfer sind ja meist nette Menschen und kein Virtuelles Gebilde. Nur leider komm ich dadurch auch nicht weiter. Habe mir schon eine Tabelle zerstört- als diese dann 50 x Eingefügt wurde. Hab den falschen Code getestet. Danach war ich etwas sauer weil ich von vorn Anfangen musste. Als Anfänger ist es sowieso sehr schwer. Aber ich werde es lernen.
Hatte auf Hilfe gehofft- und weniger auf das unwichtigere Wert gelegt.
Gruß Andreas D.
Anzeige
AW: Den Namen kannst Du ja beliebig wählen
24.09.2016 15:54:53
Matthias
Hallo Andreas
Zitat:
danke hab ich soeben gemacht- wusste ja nicht das das so wichtig ist
Nein, wichtig ist das nicht.
Nur eben günstiger Deine eigenen Beiträge in der Baumstruktur der Beiträge "von Heute" zu finden.
Zitat:
Habe mir schon eine Tabelle zerstört- als diese dann 50 x Eingefügt wurde. Hab den falschen Code getestet.
Das ist ärgerlich und hat hoffentlich dazu geführt, das Du nun immer eine Datensicherung zur Verfügung hast.
Das mache ich seit zig Jahren so.
Jede Veränderung einer Datei bekommt bei mir eine neue Versionsnummer. Immer um einen Zähler höher.
So kann ich immer auf die letzte Version zurückgreifen wenn was schief geht.
Bleiben wir nun aber im letzten Zweig der Baumstruktur.
Dort bekommst Du gleich noch einen Hinweis/Tipp von mir.
Gruß Matthias
Anzeige
Hinweis Option Explicit
24.09.2016 15:20:51
Matthias
Hallo
Noch ein wichtiger Hinweis
Benutze Option Explicit als oberste Zeile im Modul
Dann wäre es Dir angezeigt worden, das Du in Deinen Variablendeklarationen einen Fehler hast.
Du deklarierst die Boolsche Variable
Dim bloFlg As Boolean
Im weiteren Verlauf aber benutzt Du:
If blatt.Name = BlattName Then bolflg = True
Hättest Du es bemerkt ?
Gruß Matthias
Anzeige
AW: Hinweis Option Explicit
24.09.2016 15:36:05
Andreas
Danke für den Hinweis, Matthias- den Fehler hätt ich so nicht entdeckt.
AW: Hinweis Option Explicit
24.09.2016 16:02:33
Andreas
Hallo,
allerdings funktioniert das so noch nicht. Ist der Code so richtig?
Es sollte die "Tabelle1" in eine neue Tabelle "Originalkopie" 1:1 Kopiert werden, aber die Aktive Tabelle soll "Tabelle1" bleiben.
Option Explicit
Sub Kopie_Tabelle1()
'** neues Blatt Anlegen
Dim blatt As Object
Dim BlattName As String
Dim bolflg As Boolean
'** Blattname festlegen
BlattName = "Originalkopie"
'** Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
'** Nur einfügen, wenn Blatt noch nicht vorhanden ist
For Each blatt In Sheets
If blatt.Name = BlattName Then bolflg = True
Next blatt
'** Blatt nur einfügen, wenn noch nicht vorhanden
If bolflg = False Then
With ThisWorkbook
.Sheets.Add After:=Sheets(Worksheets.Count)
.ActiveSheet.Name = "Originalkopie"
End With
End If
Gruß Andreas
Anzeige
AW: Hinweis Option Explicit
24.09.2016 16:23:38
Matthias
Hallo Andreas
Du kannst auch den Makrorekorder benutzen
Der zeichnet alle Deine Vorgänge auf.
Aber eben auch alles was man nicht braucht, trotzdem ein sehr gutes Werzeug!
Versuchs mal so:
Tabelle1.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Orginalkopie"
Tabelle1.Activate
Gruß Matthias
Anzeige
Option Explicit
24.09.2016 16:11:20
Matthias
Hallo Andreas
Bleiben wir nun in diesem Zweig der Baumstruktur.
Einen Hinweis /Tipp habe ich noch für Deine Schleife.
Du benutzt Folgende:
'** Blattname festlegen
BlattName = "Originalkopie"
'** Prüfen, ob das Blatt, welches eingefügt werden soll bereits vorhanden ist
'** Nur einfügen, wenn Blatt noch nicht vorhanden ist
For Each blatt In Sheets
If blatt.Name = BlattName Then bolflg = True
Next blatt
'** Blatt nur einfügen, wenn noch nicht vorhanden
If bolflg = False Then

Es ist eigentlich nicht nötig die Schleife fortzusetzen, wenn es das Blatt mit diesem Namen schon gibt!
Ich würde die Schleife verlassen/Prozedur beenden, wenn es den Namen schon gibt.
Warum also weiteren Blätter abfragen?
so geht das:
For Each blatt In Sheets
If blatt.Name = BlattName Then bolFlg = True
MsgBox "Blatt ist schon vorhanden, Prozedur beenden", vbInformation, BlattName
Exit Sub
Next blatt
oder gleich:
If blatt.Name = BlattName Then Exit Sub
Mit Exit Sub verlässt Du einfach die Prozedur, wenn es das Blatt schon gibt
Es macht ja keinen Sinn z.B. noch 800 Blätter nach deren Namen zu prüfen, wenn
bekannt ist das es den Blattnamen schon gibt.
Verstehst Du was ich meine?
Gruß Matthias
Anzeige
AW: Option Explicit
24.09.2016 16:40:02
Andreas
Ja Matthias. hab es so eingearbeitet- Richtig es kann ja sofort die Schleife beendet werden- geht ja schneller und es ist auch nicht notwendig. Aber es fehlt noch der Kopiervorgang - etwa mit Sheets.Copy und die Aktivation der Tabelle1 danach.
Grüße Andreas D.
AW: Option Explicit
24.09.2016 16:46:25
Andreas
Hallo Matthias- das geht am besten-
Tabelle1.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Orginalkopie"
Tabelle1.Activate
Hast Recht.-
Danke für die Tipps
Grüße Andreas D.
Anzeige
Danke für Deine Rückmeldung ... owT
24.09.2016 16:48:12
Matthias
schau mal mein Beitrag bei 16:23 owT
24.09.2016 16:47:15
Matthias
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Tabelle Kopieren und Einfügen in Excel


Schritt-für-Schritt-Anleitung

Um eine Tabelle in Excel mithilfe von VBA zu kopieren und einzufügen, kannst du den folgenden Code verwenden. Dieser Code erstellt eine Kopie von "Tabelle1" und fügt sie als "Originalkopie" ein, während die aktive Tabelle "Tabelle1" bleibt.

Sub Kopie_Tabelle1()
    ' Neues Blatt anlegen
    Dim blatt As Object
    Dim BlattName As String
    Dim bolFlg As Boolean
    ' Blattname festlegen
    BlattName = "Originalkopie"
    ' Prüfen, ob das Blatt bereits vorhanden ist
    For Each blatt In Sheets
        If blatt.Name = BlattName Then
            MsgBox "Blatt ist schon vorhanden, Prozedur beenden", vbInformation, BlattName
            Exit Sub
        End If
    Next blatt
    ' Blatt nur einfügen, wenn noch nicht vorhanden
    Sheets("Tabelle1").Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = BlattName
    Sheets("Tabelle1").Activate
End Sub

Häufige Fehler und Lösungen

  1. Fehler beim Kopieren der Tabelle:

    • Stelle sicher, dass der Name der Tabelle, die du kopieren möchtest, korrekt ist. Verwende den exakten Tabellennamen.
  2. Blatt existiert bereits:

    • Wenn das Blatt schon existiert, wird eine Nachricht angezeigt und die Prozedur wird abgebrochen. Du kannst den Code anpassen, um stattdessen das bestehende Blatt zu löschen oder zu überschreiben, wenn dies gewünscht ist.
  3. Aktive Tabelle bleibt nicht:

    • Achte darauf, dass am Ende der Prozedur die Zeile Sheets("Tabelle1").Activate vorhanden ist, um sicherzustellen, dass "Tabelle1" die aktive Tabelle bleibt.

Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du auch den Excel-Makrorekorder nutzen:

  1. Gehe zu Entwicklertools > Makro aufzeichnen.
  2. Führe die Schritte zum Kopieren und Einfügen der Tabelle manuell aus.
  3. Stoppe die Aufzeichnung und passe den Code bei Bedarf an.

Praktische Beispiele

Hier sind einige Anwendungsbeispiele für das Kopieren von Tabellen in Excel:

  • Komplette Excel-Tabelle kopieren: Du kannst die gesamte Tabelle kopieren, indem du den Namen der Tabelle im Code änderst.
  • Tabelle duplizieren: Verwende den Befehl Sheets("Tabelle1").Copy um eine Kopie der Tabelle zu erstellen, ohne den Namen zu ändern.
Sub Dupliziere_Tabelle()
    Sheets("Tabelle1").Copy After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "Tabelle1_Kopie"
End Sub

Tipps für Profis

  • Option Explicit: Verwende Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft dir, Fehler in der Variablendeklaration zu vermeiden.
  • Versionskontrolle: Speichere regelmäßig Kopien deiner Excel-Dateien mit neuen Versionsnummern, um bei Fehlern auf frühere Versionen zurückgreifen zu können.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler während der Ausführung deines VBA-Codes abzufangen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Tabellen gleichzeitig kopieren?
Du kannst eine Schleife verwenden, um mehrere Tabellen zu durchlaufen und sie nacheinander zu kopieren.

2. Was mache ich, wenn die VBA-Optionen in Excel nicht verfügbar sind?
Stelle sicher, dass die Entwicklertools in Excel aktiviert sind. Gehe zu Datei > Optionen > Menüband anpassen und aktiviere das Kästchen für Entwicklertools.

3. Wie kann ich eine Tabelle in eine andere Arbeitsmappe kopieren?
Verwende den Befehl Workbook und gib den Namen der Zielarbeitsmappe an:

Sheets("Tabelle1").Copy Destination:=Workbooks("Zielmappe.xlsx").Sheets("ZielTabelle")

Mit diesen Informationen bist du gut gerüstet, um Tabellen in Excel effizient zu kopieren und einzufügen!

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