Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro ausführen vor Schließen der Tabelle

Makro ausführen vor Schließen der Tabelle
19.12.2014 17:19:48
Werner
Vorbemerkung:
Eine Arbeitsmappe enthält (derzeit) nur ein Arbeitsblatt. In diesem Arbeitsblatt werden per Verknüpfung Daten aus einer Vielzahl anderer Arbeitsmappen/Tabellen gesammelt und weiterverarbeitet. Das Speichern und Schließen erfolgt standardmäßig (Button bzw. Schließen-Kreuz)
Ein per Makrorecorder generiertes Makro kopiert Daten aus einer Spalte der Tabelle in eine andere. Dieser Vorgang wird derzeit über eine Befehlsschaltfläche angestoßen und funktioniert einwandfrei.
Aufgabe:
Der Kopiervorgang soll automatisiert beim Schließen der Tabelle/Arbeitsmappe erfolgen.
Bei Lösungsvorschlägen bitte ich auch darzustellen, ob der gesamte Text des vorhandenen Kopiermakros eingefügt oder nur namentlich aufgeführt wird. (Application.Run usw.)
Vorab herzlichen Dank für einen brauchbaren Lösungsvorschlag.

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

Betreff
Datum
Anwender
Anzeige
AW: Makro ausführen vor Schließen der Tabelle
19.12.2014 17:40:04
Dieter
Hallo Werner,
du kannst die folgende Prozedur in den Code-Modul "DieseArbeitsmappe" einstellen:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeineProzedur
End Sub
"DeineProzedur" ist der Name deines Makros.
Den Code-Modul siehst du, wenn du im Projektexplorer einen Doppelklick auf "DieseArbeitsmappe" ausführst.
Viele Grüße
Dieter

AW: Makro ausführen vor Schließen der Tabelle
20.12.2014 01:36:24
Werner
Hallo Dieter,
herzlichen Dank, es funktioniert einwandfrei. Ich war schon auf dem richtigen Weg, habe aber versucht, Deine Ergänzung in das Makro selbst einzubauen und bin damit - da kommt wieder einmal der Laie zum Vorschein - immer wieder gescheitert.
So ganz nebenbei: Bist Du der (Dr.) Dieter Klemke, der mir über lange Zeit beim Excel-Berater hilfreich zur Seite gestanden hat ?
Viele Grüße
Werner Schütz

Anzeige
AW: Makro ausführen vor Schließen der Tabelle
20.12.2014 15:58:30
Dieter
Hallo Werner,
ja, der bin ich.
Ich arbeite auch noch für den Excel-Berater. Aber gelegentlich - in letzter Zeit sehr selten - schaue ich mal bei Herber vorbei. Dort hat mich auch seinerzeit der Herr Althaus entdeckt und für seine Publikation geworben.
Viele Grüße und ein schönes Fest
Dieter

AW: Makro ausführen vor Schließen der Tabelle
20.12.2014 19:33:45
Werner
Hallo Dieter,
ich verstehe noch immer nicht, warum das Makro per Befehlsschaltfläche aus dem Standard-Modul heraus ausgelöst werden kann, ohne eine solche Schaltfläche aber in Verbindung mit dem Klassen- oder Dokumentmodul gebracht werden muss. Vielleicht kannst Du das kurz erläutern.
Ich habe die Prozedur probeweise mit zwei im Aufbau identischen Tabellen in der Arbeitsmappe getestet und festgestellt, sie läuft nur mit der jeweils aktiven Tabelle. Das ist insofern beruhigend, als damit ein gewisser Resteinfluss erhalten bleibt. Was wäre aber -rein theoretisch - wenn diese zweite Tabelle völlig andere Daten enthielte und die Prozedur Schaden anrichtete ? Müsste für einen solchen Fall das Makro statt an das Klassenmodul nicht an einzelne Tabellen gebunden werden ?
Falls wir bis dahin keinen weiteren Kontakt haben, wünsche auch ich ein frohes Fest und ein erfolgreiches 2015.
Viele Grüße
Werner

Anzeige
AW: Makro ausführen vor Schließen der Tabelle
20.12.2014 19:35:01
Werner
Hallo Dieter,
ich verstehe noch immer nicht, warum das Makro per Befehlsschaltfläche aus dem Standard-Modul heraus ausgelöst werden kann, ohne eine solche Schaltfläche aber in Verbindung mit dem Klassen- oder Dokumentmodul gebracht werden muss. Vielleicht kannst Du das kurz erläutern.
Ich habe die Prozedur probeweise mit zwei im Aufbau identischen Tabellen in der Arbeitsmappe getestet und festgestellt, sie läuft nur mit der jeweils aktiven Tabelle. Das ist insofern beruhigend, als damit ein gewisser Resteinfluss erhalten bleibt. Was wäre aber -rein theoretisch - wenn diese zweite Tabelle völlig andere Daten enthielte und die Prozedur Schaden anrichtete ? Müsste für einen solchen Fall das Makro statt an das Klassenmodul nicht an einzelne Tabellen gebunden werden ?
Falls wir bis dahin keinen weiteren Kontakt haben, wünsche auch ich ein frohes Fest und ein erfolgreiches 2015.
Viele Grüße
Werner

Anzeige
AW: Makro ausführen vor Schließen der Tabelle
20.12.2014 20:57:34
Dieter
Hallo Werner,
vielen Dank für deine Festtagswünsche.
Zum Aufruf deines Makros:
Grundsätzlich kann dein Makro aus jedem Modul heraus aufgerufen werden. Allerdings wolltest du ja, dass das Makro automatisch gestartet wird, wenn die Arbeitsmappe geschlossen wird und das geht nur auf 2 Wegen.
1. Durch eine Workbook_BeforeClose-Prozedur, die im Code-Modul "DieseArbeitsmappe" angesiedelt sein muss.
2. Durch eine Auto_Close-Prozedur, die in einem normalen Modul steht.
Das zweite Verfahren gilt aber als veraltet, daher bleibt eigentlich nur 1.
Zu deinen Bedenken, dass die Prozedur Schaden anrichten könnte:
Wenn die Prozedur so geschrieben ist, dass sie für das momentan aktive Blatt arbeitet, dann könntest du dieses Blatt vor Aufruf der Prozedur automatisch aktivieren, z.B. so
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Me.Worksheets("DeinBlatt").Activate
DeineProzedur
End Sub

Eine weitere - elegantere - Möglichkeit besteht darin, dass du deine Prozedur so schreibst, dass sie nicht für das aktive Blatt arbeitet, sondern für ein Blatt ws, welches du am Anfang der Prozedur festgelegt hast
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("DeinBlatt")

Du musst dann alle deine Range-Objekte mit der Adresse ws versehen, also anstelle von Range("A1:B4") schreibst du jetzt ws.Range("A1:B4").
Viele Grüße
Dieter
Anzeige

55 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige