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

Forumthread: Per VBA Code in neues Tabellenblatt einfügen

Per VBA Code in neues Tabellenblatt einfügen
28.09.2016 12:35:44
Hartmut_M
Hallo, bitte helft mir bei folgender Frage.
Per VBA kopiere ich ein Tabellenblatt in meine Hauptdatei.
In dieses neue Tabellenblatt möchte ich gerne Code für ein SelectionChange Ereignis einfügen.
Ich stelle mir vor, dass der Code in einem Modul abgespeichert ist und dann per VBA in das neue Tabellenblatt kopiert wird.
Ist das möglich, und wenn ja wie?
Gruß Hartmut
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Code in neues Tabellenblatt einfügen
28.09.2016 16:53:49
Hajo_Zi
Hallo Hartmut,
warum nicht gleich in der Tabelle die kopiert wird?
Bei Deiner Aufgabe muss der Zugriff auf das VBA Projekt zugelassen werden.
Ich gebe dazu keine Auskunft.

AW: Per VBA Code in neues Tabellenblatt einfügen
29.09.2016 10:05:03
Hartmut_M
Hallo, erstmal danke für eure Rückmeldungen.
Komme allerdings noch nicht richtig weiter.
Die Tabelle, die kopiert wird, ist eine maschinell erzeugte csv-Datei, die jede Woche neu erstellt wird. Dieses Tabellenblatt kopiere ich in meine bestehende Excel-Datei. In das importierte Tabellenblatt soll dann code eingefügt werden. Wie könnte ich das sonst bewerkstelligen?
Habe jetzt durch Google folgende Lösung gefunden:
'Makro in neues Tabellenblatt kopieren
Dim x As Integer
With ThisWorkbook.VBProject.VBComponents("Tabelle1").CodeModule
x = .CreateEventProc("Change", "Worksheet")
.InsertLines x + 1, "Dim NR As String, VN As String"
.InsertLines x + 2, "Set Target = Application.Intersect(Target, Range(""B:B""))"
Damit läuft alles so, wie ich es benötige.
Mein Problem ist jetzut noch, dass bei VBComponents in Klammern die Tabellenbezeichnung mit Nummer eingegeben werden muss. Diese Tabellennummer ist aber nicht immer gleich. Statt der Bezeichnung würde ich lieber den Tabellennamen, wie er unten am Tabellenblatt steht nehmen. Also so:
With ThisWorkbook.VBProject.VBComponents("47110").CodeModule

Da bekomme ich aber den Laufzeitfehler 9: Index außerhalb des gültigen Bereiches.
Was mache ich falsch, bzw. wie muss es richtig lauten?
Gruß Hartmut
Anzeige
AW: Per VBA Code in neues Tabellenblatt einfügen
28.09.2016 17:07:33
Daniel
Hi
prinzipell ist sowas möglich, ist aber aufwendig (such mal im Internet nach "Code mit Code manipulieren")
wenn du die Eventmakros aber schon im Vorlagenblatt erstellst und das Blatt mit Sheets.Copy überträgst, werden die Makros automatisch mit übernommen.
wenn du möchtest, dass die Eventmakros erst in der Hauptdatei funktionieren und in der Vorlage noch nicht, dann könntest du ja an den Anfang folgende Prüfung stellen:
IF ThisWorkbook.Name = "Name der Vorlagendatei.xlsb" Then Exit Sub

Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Per VBA Code in neues Tabellenblatt einfügen


Schritt-für-Schritt-Anleitung

Um ein neues Tabellenblatt in Excel per VBA zu erstellen und gleichzeitig Code in dieses Tabellenblatt einzufügen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul ein, indem du im Projekt-Explorer mit der rechten Maustaste auf „VBAProject (dein_dateiname)“ klickst und dann auf Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub NeuesTabellenblattErstellen()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Worksheets.Add
    
        ' Tabellenblatt umbenennen
        ws.Name = "Neues Blatt"
    
        ' Code in das neue Tabellenblatt einfügen
        With ThisWorkbook.VBProject.VBComponents(ws.CodeName).CodeModule
            .InsertLines .CountOfLines + 1, "Sub BeispielMakro()"
            .InsertLines .CountOfLines + 2, "    MsgBox ""Hallo, Welt!"""
            .InsertLines .CountOfLines + 3, "End Sub"
        End With
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, um das neue Tabellenblatt zu erstellen und den Code einzufügen.


Häufige Fehler und Lösungen

  • Excel neues Tabellenblatt einfügen geht nicht: Stelle sicher, dass du die Berechtigungen für das VBA-Projekt aktiviert hast. Gehe dazu zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Macro Settings und aktiviere die entsprechenden Optionen.

  • Laufzeitfehler 9: Index außerhalb des gültigen Bereichs: Dies passiert häufig, wenn du versuchst, auf ein Tabellenblatt zuzugreifen, das nicht existiert oder falsch benannt ist. Überprüfe den Namen des Tabellenblatts und stelle sicher, dass du den Code im richtigen Kontext ausführst.


Alternative Methoden

Eine alternative Methode, ein neues Tabellenblatt zu erstellen und Code einzufügen, besteht darin, ein bereits vorhandenes Tabellenblatt zu kopieren und es in dein Arbeitsblatt einzufügen. Verwende folgenden Code:

Sub TabellenblattKopieren()
    ThisWorkbook.Sheets("Vorlage").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    With ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        .Name = "Kopiertes Blatt"
        ' Hier kannst du zusätzlichen Code einfügen
    End With
End Sub

Praktische Beispiele

Hier sind zwei Beispiele, wie du ein Excel VBA neues Tabellenblatt mit Namen erstellen und Code hinzufügen kannst:

  1. Neues Tabellenblatt ohne spezifischen Namen:

    Sub NeuesBlattOhneNamen()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Worksheets.Add
        ' Code hinzufügen
        ws.Cells(1, 1).Value = "Willkommen im neuen Blatt!"
    End Sub
  2. Neues Tabellenblatt mit einem benutzerdefinierten Namen:

    Sub NeuesBlattMitNamen()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Worksheets.Add
        ws.Name = "MeinBlatt"
        ' Code hinzufügen
        ws.Cells(1, 1).Value = "Dies ist mein benanntes Blatt!"
    End Sub

Tipps für Profis

  • Nutze die CreateEventProc Methode, um Event-Handler direkt in dein neues Tabellenblatt einzufügen.
  • Halte deinen Code organisiert, indem du häufig genutzte Funktionen in separate Module auslagerst.
  • Verwende die On Error Resume Next Anweisung, um Fehler zu ignorieren, die auftreten könnten, wenn du versuchst, bereits existierende Tabellenblätter umzubenennen.

FAQ: Häufige Fragen

1. Wie kann ich einen bereits bestehenden Code in ein neues Tabellenblatt einfügen? Du kannst den Code in ein Modul einfügen und dann mit der InsertLines Methode in das neue Tabellenblatt übertragen.

2. Kann ich ein neues Tabellenblatt mit einem spezifischen Namen erstellen? Ja, du kannst das neue Tabellenblatt umbenennen, indem du die Name-Eigenschaft des Worksheets verwendest, nachdem du es erstellt hast.

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