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

Forumthread: Tabellenblatt Code per VBA schreiben

Tabellenblatt Code per VBA schreiben
17.08.2018 10:17:05
Stefan
Ich möchte in ein per VBA Befehl neu erstelltes Tabellenblatt anschließend Code schreiben.
Sub AddCode()
Dim strCode As String
strCode = "Test"
DieseArbeitsmappe.VBProject.VBComponents(Worksheets(1).CodeName).CodeModule. _
InsertLines LineNr + 1, strCode
End Sub
Beim Aufrufen bekommt man diese Fehlermeldung
Laufzeitfehler '9':
Index außerhalb des gültigen Bereichs.
Problem ist, dass das Tabellenblatt zu dem Zeitpunkt zwar schon fertig erstellt ist, aber er "Worksheets(1).CodeName" nicht auslesen kann. Somit kann ich das entsprechende Arbeitsblatt natürlich nicht ansprechen.
Komisch ist auch, dass der Befehl funktioniert, wenn man ihn im Debugger Schritt für Schritt durchgeht. Da kommt dann nur die Meldung "Wechseln in den Haltemodus zu diesem Zeitpunkt nicht möglich." Klickt man dort dann auf Fortfahren funktioniert alles.
Wenn jemand eine Idee hat wie man das Problem lösen kann wäre ich euch sehr dankbar
Stefan
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt Code per VBA schreiben
17.08.2018 10:26:35
ChrisL
Hi Stefan
Du nimmst den CodeName aus der aktiven Mappe (fehlende Referenzierung) und wendest es auf DieseArbeitsmappe an.
Sub AddCode()
Dim strCode As String
Dim lngLineNr As Long
strCode = "Test"
lngLineNr = 1
With ThisWorkbook
With .VBProject.VBComponents(.Worksheets(1).CodeName).CodeModule
.InsertLines lngLineNr, strCode
End With
End With
End Sub
cu
Chris
Anzeige
AW: Tabellenblatt Code per VBA schreiben
17.08.2018 10:41:54
ChrisL
noch eine Variante mit einer neuen Mappe...
Sub AddCode()
Dim wkb As Workbook
Dim strCode As String
Dim lngLineNr As Long
strCode = "Test"
lngLineNr = 1
Set wkb = Workbooks.Add
With wkb
With .VBProject.VBComponents(.Worksheets(1).CodeName).CodeModule
.InsertLines lngLineNr, strCode
End With
End With
End Sub

Anzeige
AW: Tabellenblatt Code per VBA schreiben
17.08.2018 10:29:57
Nepumuk
Hallo Stefan,
du musst das erstellen der Tabelle und des Codes per OnTime entkoppeln.
Beispiel in der Routine zum erstellen der Tabelle:
Application.OnTime Now, "AddCode"

Gruß
Nepumuk
AW: Tabellenblatt Code per VBA schreiben
17.08.2018 11:20:23
Stefan
Danke mal für eure Antworten, aber habe immer noch den gleichen Fehler.
Habe hier mal ein kleines File erstellt um es besser zu erkennen.
https://www.herber.de/bbs/user/123389.xlsm
Dort sieht man auch, dass in der MessageBox kein Name ausgegeben wird.
Anzeige
AW: Tabellenblatt Code per VBA schreiben
17.08.2018 12:17:13
Stefan
Danke, hat zwar damit allein auch nicht funktioniert.
Habe aber jetzt die Lösung gefunden.
Es funktioniert nur, wenn der VB Editor im Hintergrund geöffnet ist.
Stefan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt Code per VBA schreiben


Schritt-für-Schritt-Anleitung

Um per VBA Code in ein neu erstelltes Tabellenblatt zu schreiben, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject", dann "Einfügen" > "Modul").

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub AddCode()
        Dim strCode As String
        Dim lngLineNr As Long
        strCode = "Test"
        lngLineNr = 1
        With ThisWorkbook
            With .VBProject.VBComponents(.Worksheets(1).CodeName).CodeModule
                .InsertLines lngLineNr, strCode
            End With
        End With
    End Sub
  4. Stelle sicher, dass der richtige CodeName für das Arbeitsblatt verwendet wird.

  5. Führe das Makro aus (F5).


Häufige Fehler und Lösungen

  • Laufzeitfehler '9': Index außerhalb des gültigen Bereichs.

    • Ursache: Der Code versucht, auf ein nicht existierendes Arbeitsblatt zuzugreifen.
    • Lösung: Überprüfe den CodeName des Arbeitsblatts. Nutze die Debug.Print-Anweisung, um den CodeName zu überprüfen.
  • Es funktioniert nur, wenn der VB Editor im Hintergrund geöffnet ist.

    • Lösung: Stelle sicher, dass der VBA-Editor geöffnet ist, bevor du das Makro ausführst.

Alternative Methoden

Du kannst auch den folgenden Code verwenden, um ein neues Arbeitsblatt zu erstellen und Code zu schreiben:

Sub AddCodeToNewWorkbook()
    Dim wkb As Workbook
    Dim strCode As String
    Dim lngLineNr As Long
    strCode = "Test"
    lngLineNr = 1
    Set wkb = Workbooks.Add
    With wkb
        With .VBProject.VBComponents(.Worksheets(1).CodeName).CodeModule
            .InsertLines lngLineNr, strCode
        End With
    End With
End Sub

Diese Methode erstellt ein neues Workbook und fügt den Code in das erste Arbeitsblatt ein.


Praktische Beispiele

Hier ist ein Beispiel, wie du den Code in einer Routine verwenden kannst, die ein Tabellenblatt erstellt und anschließend Code hinzufügt:

Sub CreateSheetAndAddCode()
    Dim ws As Worksheet
    Dim strCode As String
    strCode = "MsgBox ""Hello, World!"""

    ' Neues Arbeitsblatt erstellen
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Name = "MeinNeuesBlatt"

    ' Code in das neue Arbeitsblatt einfügen
    With ThisWorkbook
        With .VBProject.VBComponents(ws.CodeName).CodeModule
            .InsertLines 1, strCode
        End With
    End With
End Sub

Tipps für Profis

  • Verwende Application.OnTime, um die Erstellung des Arbeitsblatts und das Hinzufügen des Codes zu entkoppeln. Beispiel:

    Application.OnTime Now, "AddCode"
  • Nutze den VBA-Debugger, um durch den Code zu gehen und sicherzustellen, dass alle Variablen korrekt gesetzt sind.

  • Dokumentiere deinen Code gut, um die Wartbarkeit zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich den Code für ein spezifisches Arbeitsblatt schreiben?
Du musst den CodeName des Arbeitsblatts angeben. Verwende Worksheets("Blattname").CodeName anstelle von Worksheets(1).CodeName.

2. Warum wird der Code nicht ausgeführt, wenn das Arbeitsblatt nicht sichtbar ist?
Wenn das Arbeitsblatt nicht sichtbar ist, kann es sein, dass der Code nicht korrekt ausgeführt wird. Stelle sicher, dass das Arbeitsblatt sichtbar ist oder öffne den VBA-Editor für die Ausführung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige