898 Aufrufe
Gefragt in Tabellenkalkulation von peters Mitglied (460 Punkte)
Bearbeitet von peters
Hallo zusammen!

Ich habe in meiner Vorlage eine Menge Makros im Modul1 gespeichert.

Ich möchte nun alle Makros von dort verschieben ins Tabellenblatt "Makros".

Was muss ich dabei beachten, damit meine Makros weiterhin ordentlich und korrekt arbeiten?

Hintergrund: Ich möchte per VBA das Tabellenblatt "Makros" löschen und somit auf einen Schlag die ganze Excel-Datei von den vorhandenen Makros befreien.

Gruß

Peter

5 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

zum Löschen von Makros schau dir mal das hier an: Link

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Hallo M.O.,

danke für den Hinweis. Allerdings funzt die zum Download angebotene Datei nicht und produziert
lediglich Fehlermeldungen, dass für den Einsatz auf 64-Bit-Systemen aktualisiert werden müsste.

Abgesehen davon, dass ich nicht weiß wie das geht, ist eine Lösung, die nur Betriebssystemabhängig (32bit vs. 64bit) funktioniert, nicht zielführend.

Deshalb komme ich doch wieder zurück auf meine Ausgangsfrage...

LG

Peter
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

das folgende Makro aus der verlinkten Seite löscht alle Module in deiner Arbeitsmappe, so dass du keine Makros in das Modul eines Tabellenblatts verschieben musst:

Sub Alle_Module_löschen()
'Es werden die Anzahl der vorhandenen Module ermittelt
'und dann der Reihe nach gelöscht.
For Modulanzahl = ThisWorkbook.VBProject.vbComponents.Count To 1 Step -1
If ThisWorkbook.VBProject.vbComponents(Modulanzahl).Type = 1 Then
ThisWorkbook.VBProject.vbComponents(Modulanzahl).Collection.Remove _
ThisWorkbook.VBProject.vbComponents(Modulanzahl)
End If
Next
End Sub

Der Code arbeitet bei mir (64Bit-System) ohne Probleme.

Gruß

M.O.

0 Punkte
Beantwortet von peters Mitglied (460 Punkte)
Guten Morgen, MO,

danke, aber bei mir läuft der Code nicht, ganz egal, wo ich ihn einsetze:

- in einem Modul: Fehler 1004: Die Methode 'VBProject' für das Opbekt '_Workbook' ist fehlgeschlagen
- im VBA-Projekt: Laufzeitfehler 1004: Anwendungs- oder objektorientierter Fehler
- über AktiveX-Button und Befehlsschaltfläche: Fehler 1004: Die Methode 'VBProject' für das Opbekt '_Workbook' ist fehlgeschlagen

Eine Frage am Rande:
Was spricht gegen Code im Blatt-Modul?
Ich sehe da vom Handling grundsätzlich auch Vorteile:
- einfach zu löschen: Blatt weg = Code weg
- Code einfach und blattbezogen kopieren in andere Arbeitsmappen: Blatt kopiert = Code kopiert

Also was ist zu beachten, wenn ich Code ins Blatt-Modul übertrage?

Gruß

Peter
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Peter,

wenn du deine Makros in dem VBA-Projekt eines Tabellenblatts ablegst, wird das Makro - soweit du nicht ausdrücklich ein anderes Tabellenblatt ansprichst - immer in dem betreffenden Tabellenblatt ausgeführt.

Kopierst du den folgenden Code in ein allgemeins Modul und führst in in verschiedenen Tabellenblättern aus, wird immer das Wort hier in das aktive Tabellenblatt geschrieben:

Sub test()
Range("A1") = "hier"
End Sub

Kopierst du den Code allerdings in das VBA-Projekt des Tabellenblatts1 und führst in von Tabellenblatt2 aus, dann wird das Wort hier trotzdem in Tabellenblatt1 geschrieben. Änderst du das Makro wie folgt, wird das Wort wieder in das aktive Tabellenblatt geschrieben:

Sub test()
ActiveSheet.Range("A1") = "hier"
End Sub

Auch ist der Aufruf anders, wenn du das Makro aus einem anderen Makro aufrufen willst: Call Tabelle1.test

Nutzt du z.B. Public-Variablen in deinem Code, dann musst du diese in einem allgemeinen Modul deklarieren.

Gruß

M.O.

...