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

Forumthread: Code in Tabellenblatt per Makro einfügen

Code in Tabellenblatt per Makro einfügen
19.03.2013 04:12:30
ludmila
Hallo,
ich möchte einen Tabellenblatt-Code aus einem anderen Arbeitsmappen-Modul
einfügen lassen.
Wird aber nicht.
Danke!
Gruß
Ludmila
Windows("Collect.xlsx").Activate
With Workbooks("Collect.xlsx").VBProject.VBComponents("Muster").CodeModule
Code = .Lines(1, 1)
If Code = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" Then
.DeleteLines 1, 9
Else
linenr = .CreateEventProc("SelectionChange", "Worksheet")
.InsertLines linenr + 1, "Dim KeyCells As Range"
.InsertLines linenr + 2, "On Error Resume Next"
.InsertLines linenr + 3, "Set KeyCells = Range(""A22:F1000"")"
.InsertLines linenr + 4, "If Not Application.Intersect(KeyCells, Range(Target.Address))Is Nothing Then"
.InsertLines linenr + 5, "Cells(11, 9) = 1"
.InsertLines linenr + 6, "End If"
End If
End With

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Code in Tabellenblatt per Makro einfügen
19.03.2013 07:35:35
Hajo_Zi
den Zugriff auf das VBA Projekt hast Du zugelassen.
Dazu gebe ich keine Anleitung, da dies meiner Meinung nach tief in die Sicherheit geht.

AW: Code in Tabellenblatt per Makro einfügen
19.03.2013 10:16:50
Rudi
Hallo,
wer sagt denn, dass die Prozedur immer in Zeile 1 steht? Da sollte Option Explicit stehen!
Sub aaa()
Dim x, y As Long, LineNr As Long
Const sProc As String = "worksheet_selectionchange"
With Workbooks("Collect.xlsx")
With .VBProject.VBComponents(.Sheets("Muster").CodeName).CodeModule
On Error Resume Next
x = .ProcStartLine(sProc, vbext_pk_Proc)
On Error GoTo 0
If x  "" Then 'Proz vorhanden und wird gelöscht
y = .ProcCountLines(sProc, vbext_pk_Proc)
.DeleteLines x, y
End If
LineNr = .CreateEventProc("selectionchange", "Worksheet")
.InsertLines LineNr + 1, "  Dim KeyCells As Range"
.InsertLines LineNr + 2, "  On Error Resume Next"
.InsertLines LineNr + 3, "  Set KeyCells = Range(""A22:F1000"")"
.InsertLines LineNr + 4, "  If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then"
.InsertLines LineNr + 5, "    Cells(11, 9) = 1"
.InsertLines LineNr + 6, "  End If"
.DeleteLines LineNr + 7, 1
End With
End With
End Sub

Gruß
Rudi

Anzeige
AW: Code in Tabellenblatt per Makro einfügen
20.03.2013 03:38:58
ludmila
Hallo Rudi,
Danke!, funkt super.
Gruß
Ludmila
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Code in Tabellenblatt per Makro einfügen


Schritt-für-Schritt-Anleitung

Um einen VBA-Code in ein Excel-Tabellenblatt über ein Makro einzufügen, kannst Du die folgenden Schritte befolgen:

  1. Excel öffnen: Starte Excel und öffne die Arbeitsmappe, in die Du den Code einfügen möchtest.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul einfügen: Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)", wähle "Einfügen" und dann "Modul".

  4. Code eingeben: Füge den folgenden Excel VBA Code in das neue Modul ein:

    Sub CodeInTabellenblattEinfügen()
       Dim linenr As Long
       With Workbooks("Collect.xlsx").VBProject.VBComponents("Muster").CodeModule
           ' Hier wird der bestehende Code überprüft und ggf. gelöscht
           If .Lines(1, 1) = "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" Then
               .DeleteLines 1, 9
           End If
           linenr = .CreateEventProc("SelectionChange", "Worksheet")
           .InsertLines linenr + 1, "Dim KeyCells As Range"
           .InsertLines linenr + 2, "On Error Resume Next"
           .InsertLines linenr + 3, "Set KeyCells = Range(""A22:F1000"")"
           .InsertLines linenr + 4, "If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then"
           .InsertLines linenr + 5, "Cells(11, 9) = 1"
           .InsertLines linenr + 6, "End If"
       End With
    End Sub
  5. Makro ausführen: Speichere Deine Arbeit und schließe den VBA-Editor. Führe das Makro über ALT + F8 aus und wähle das erstellte Makro aus.


Häufige Fehler und Lösungen

  • Fehler: Zugriff auf das VBA-Projekt verweigert
    Lösung: Stelle sicher, dass Du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Makroeinstellungen und aktiviere die Option "Zugriff auf das VBA-Projekt vertrauen".

  • Fehler: Prozedur nicht gefunden
    Lösung: Überprüfe, ob der Name der Prozedur korrekt ist und ob Du den richtigen VBA-Code verwendest. Die Prozedur muss exakt so benannt werden, wie sie im Code definiert ist.


Alternative Methoden

Eine alternative Methode, um VBA Code in Excel einzufügen, ist das Importieren von einer Datei:

  1. Im VBA-Editor wähle Datei > Importieren.
  2. Wähle die .bas-Datei, die den gewünschten Code enthält.
  3. Der Code wird automatisch in das aktuelle Modul eingefügt.

Praktische Beispiele

Hier sind einige Beispiele, wie Du den Code nutzen kannst:

  1. Zellenfarbe ändern: Du kannst den Code erweitern, um die Zellenfarbe zu ändern, wenn eine Auswahl getroffen wird:

    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
       Cells(11, 9).Interior.Color = RGB(255, 0, 0) ' Ändert die Zellenfarbe auf Rot
    End If
  2. Benachrichtigung anzeigen: Füge eine Nachricht hinzu, die informiert, wenn eine Zelle bearbeitet wird:

    MsgBox "Die Zelle wurde geändert!"

Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Organisiere Deinen Code in Modulen, um die Übersichtlichkeit zu erhöhen.
  • Nutze Kommentare, um den Zweck der einzelnen Codezeilen zu erläutern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Makro funktioniert?
Stelle sicher, dass Du die richtigen Einstellungen in Excel vornimmst und den Code in der richtigen Arbeitsmappe ausführst.

2. Was mache ich, wenn ich Fehler im Code erhalte?
Überprüfe den Code Zeile für Zeile und achte auf Syntaxfehler oder falsche Referenzen. Nutze die Debugging-Tools im VBA-Editor, um den Fehler zu finden.

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