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

Forumthread: VBA Code per Makro in Arbeitsblatt einfügen

VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 18:02:46
Andy
Hallo.
Ich hoffe dass Ihr mir helfen könnt..
In einer Tabelle habe ich ein Tabellenblatt und lasse automatisch, abhängig von bestimmten Eingaben,weitere Tabellenblätter (bis zu 30) anlegen. Nun würde ich gerne diese Tabellenblätter auch gleich noch mit einem (immer gleichen) VBA Code hinterlegen, der dann beim anklicken des Blattes ausgeführt werden soll.
Nur wie bekomme ich den Code in die Tabellenblätter hinein (ohne ihn jedesmal schreiben zu müssen) also per VBA.
Hab im Forum nichts wirklich gefunden, was mir weitergeholfen hat. :-(
Vielleicht habt Ihr ne Idee?
Danke schonmal für Eure Hilfe!
LG Andy
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 18:18:20
Kurt
Hi,
mach dir ein Blatt mit Code als Vorlage, beim Kopieren des ganzen Blatts wird der Code mitkopiert.
mfg Kurt
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 18:31:26
Andy
Hallo..
Danke erstmal für die Antwort..
aber geht das nicht auch per VBA... also ohne dass ich eine Musterseite erstellen und kopieren muss?
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 18:37:49
Kurt
Hi,
klar geht das auch, aber mit Vorlage ist es viel einfacher und nicht so
fehleranfällig.
mfg Kurt
Anzeige
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 18:42:44
Andy
Hm ok.
ich werd mal schaun-.
aber mal der Interesse halber.. wie würde das denn gehen mit dem VBA Code einfügen?
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 19:19:41
Kurt
Hi,
schon mal in die Recherche gesehen?
mfg Kurt
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 19:32:21
Andy
Ja klar.. Hab ja sogar die CD mit dem Archiv.. Hab nur leider nichts wirklich gefunden was mir weitergeholfen hat :-(
Deshalb probier ich das jetzt mit der Frage hier..
Anzeige
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 21:23:42
Peter
Hallo Andy,
es geht auf diverse Arten, z. B. kannst du das Makro in eine Text-Datei schreiben, die du dann einliest und in das Tabellenblatt einfügst z. B. so:
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.AddFromFile ImportDatei
End With
oder auch direkt aus einem Makro, wie im Beispiel:
Option Explicit

Sub WB_Code_via_VBA_Kapitel()
Const WS      As String = "Kapitel"
Dim VBC       As Object
Dim LineNr    As Integer
With ThisWorkbook.VBProject.VBComponents(Worksheets(WS).CodeName).CodeModule
LineNr = .CreateEventProc("Change", "Worksheet")
.InsertLines LineNr + 1, " "
.InsertLines LineNr + 2, "Dim r    As Long"
.InsertLines LineNr + 3, "Dim wsB  As Worksheet"
.InsertLines LineNr + 4, "Dim wsC  As Worksheet"
.InsertLines LineNr + 5, " "
.InsertLines LineNr + 6, "   If Target.Column = 7 And Target.Row > 1 Then"
.InsertLines LineNr + 7, "      If Target.Count = 1 Then"
.InsertLines LineNr + 8, "         Set wsB = Sheets(""Lotus Notes"")"
.InsertLines LineNr + 9, "         Set wsC = Sheets(""Binf neu (2)"")"
.InsertLines LineNr + 10, "         r = Target.Row - 1"
.InsertLines LineNr + 11, "         Application.EnableEvents = False"
.InsertLines LineNr + 12, "         On Error GoTo ERRH"
.InsertLines LineNr + 13, "         Range(Cells(r, 1), Cells(r, 6)).Copy Range(Cells(r + 1, 1), Cells(r + 1, 6))"
.InsertLines LineNr + 14, "         wsB.Range(wsB.Cells(r, 1), wsB.Cells(r, 6)).Copy wsB.Range(wsB.Cells(r + 1, 1), wsB.Cells(r + 1, 6))"
.InsertLines LineNr + 15, "         wsC.Range(wsC.Cells(r, 1), wsC.Cells(r, 9)).Copy wsC.Range(wsC.Cells(r + 1, 1), wsC.Cells(r + 1, 9))"
.InsertLines LineNr + 16, "         Range(Cells(r, 8), Cells(r, 9)).Copy Range(Cells(r + 1, 8), Cells(r + 1, 9))"
.InsertLines LineNr + 17, "         wsB.Range(wsB.Cells(r, 7), wsB.Cells(r, 12)).Copy wsB.Range(wsB.Cells(r + 1, 7), wsB.Cells(r + 1, 12))"
.InsertLines LineNr + 18, "         wsC.Range(wsC.Cells(r, 22), wsC.Cells(r, 26)).Copy wsC.Range(wsC.Cells(r + 1, 22), wsC.Cells(r + 1, 26))"
.InsertLines LineNr + 19, "         Set wsB = Nothing"
.InsertLines LineNr + 20, "         Set wsC = Nothing"
.InsertLines LineNr + 21, "      End If"
.InsertLines LineNr + 22, "   End If"
.InsertLines LineNr + 23, " "
.InsertLines LineNr + 24, "ERRH:"
.InsertLines LineNr + 25, " "
.InsertLines LineNr + 26, "   Application.EnableEvents = True"
End With
End 

Sub
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.

Anzeige
AW: VBA Code per Makro in Arbeitsblatt einfügen
21.08.2006 21:29:08
Kurt
Hi,
du hast vergessen zu erwähnen, dass ein Verweis auf die VB6EXT.OLB erforderlich ist.
mfg Kurt
AW: VBA Code per Makro in Arbeitsblatt einfügen
22.08.2006 08:43:29
Andy
Oh super! das klappt wie geschmiert :-)
So hab ich mir das vorgestellt :-)
Achso, einen Hinweis noch für diejenigen die das auch brauchen..
Falls ein Laufzeitfehler 1004 vorkommt, einfach bei Extra, Makro, dann Sicherheit und dann Vertrauenswürdige Quellen das Häkchen bei "Zugriff auf Visual Basic Projekte vertrauen" setzen..
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Code per Makro in Arbeitsblatt einfügen


Schritt-für-Schritt-Anleitung

  1. Öffne das VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineArbeitsmappe)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den Makro-Code ein: Kopiere den folgenden VBA-Code in das Modul:

    Sub WB_Code_via_VBA_Kapitel()
       Const WS As String = "Kapitel"
       Dim VBC As Object
       Dim LineNr As Integer
       With ThisWorkbook.VBProject.VBComponents(Worksheets(WS).CodeName).CodeModule
           LineNr = .CreateEventProc("Change", "Worksheet")
           .InsertLines LineNr + 1, " "
           .InsertLines LineNr + 2, "Dim r As Long"
           .InsertLines LineNr + 3, "Dim wsB As Worksheet"
           .InsertLines LineNr + 4, "Dim wsC As Worksheet"
           ' Weitere Zeilen des Codes hier einfügen...
       End With
    End Sub
  4. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro aus und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dies kann auftreten, wenn Du keinen Zugriff auf die Visual Basic-Projekte hast. Gehe zu Extras > Makros > Sicherheit und aktiviere die Option „Zugriff auf Visual Basic Projekte vertrauen“.

  • Fehlender Verweis auf VB6EXT.OLB: Wenn der Code nicht funktioniert, überprüfe, ob der Verweis auf die „VB6EXT.OLB“ aktiv ist. Dies kannst Du unter Extras > Verweise im VBA-Editor einsehen.


Alternative Methoden

Eine alternative Methode, um den VBA Code in Excel einzufügen, besteht darin, den Code in einer Textdatei zu speichern und diese Datei dann in das Arbeitsblatt zu importieren. Hier ist ein Beispiel:

With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
    .AddFromFile "Pfad\zu\deiner\Datei.txt"
End With

Diese Methode kann nützlich sein, wenn Du mehrere Arbeitsblätter mit demselben Code befüllen möchtest, ohne ihn mehrfach schreiben zu müssen.


Praktische Beispiele

Angenommen, Du möchtest einen einfachen Makro Code hinzufügen, der beim Ändern einer Zelle in einem bestimmten Arbeitsblatt ausgeführt wird. Der folgende Code könnte in das Modul eingefügt werden:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        MsgBox "Die Zelle A1 wurde geändert!"
    End If
End Sub

Dieser Code zeigt eine Nachricht an, wenn die Zelle A1 geändert wird. Mit dieser Methode kannst Du Excel-Makros effektiv nutzen.


Tipps für Profis

  • Nutze Vorlagen: Erstelle ein Master-Arbeitsblatt mit dem benötigten VBA-Code. Das Kopieren dieses Blattes, anstatt den Code manuell einzugeben, kann viel Zeit sparen.

  • Dokumentiere Deinen Code: Füge Kommentare in Deinen VBA-Code ein, um die Funktionalitäten zu erläutern. Dies hilft nicht nur Dir, sondern auch anderen, die Deinen Code möglicherweise später lesen.

  • Verwende Fehlermanagement: Implementiere On Error-Anweisungen, um Laufzeitfehler elegant zu handhaben und die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein VBA-Code bei jedem neuen Arbeitsblatt automatisch eingefügt wird? Du kannst eine Schleife erstellen, die über alle neuen Arbeitsblätter iteriert und Deinen VBA Code einfügt.

2. Wo finde ich weitere Beispiele für VBA Codes in Excel? Es gibt viele Online-Ressourcen, Foren und Bücher, die sich mit VBA und Excel Makros beschäftigen. Eine gute Anlaufstelle ist die Microsoft-Dokumentation oder spezielle Excel-Foren.

3. Ist es notwendig, das Excel-Dokument als Makro-fähige Datei zu speichern? Ja, um Excel Makros verwenden zu können, musst Du das Dokument als .xlsm-Datei speichern.

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