Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1556to1560
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

Bei Änderungen auf einer Tabelle ...

Bei Änderungen auf einer Tabelle ...
10.05.2017 11:18:27
Lumi
Liebe VBA – Profis
Ich hoffe, jemand kann mir bei meinem Vorhaben weiterhelfen ?
Und zwar suche ich nach einer Möglichkeit, auf einem bestimmten Tabellenblatt nach Änderungen zu überprüfen.
D.h. wird auf einem bestimmten Tabellenblatt etwas verändert, mutiert, gelöscht, hinzugefügt, so soll anschliessend die Datei nicht
geschlossen werden können, ehe man ein bestimmtes Makro vorgängig startet (per Schaltfläche)
also ähnlich der Funktion die es bei Excel schon gibt, wenn man eine Datei mutiert hat und Excel beenden will.
Da erscheint doch beim Beenden von Excel die Frage ob die Änderungen gespeichert werden sollen oder nicht.
Bei mir soll aber statt diese Frage, zuerst eine MsgBox mit Schaltfläche aufpoppen, auf welcher man ein Makro starten muss, ehe
die Datei beendet werden kann.
Geht sowas ?
Ich hab aufgrund diverser Google-Recherchen schon mal folgenden Ansatz zum Überwachen gefunden:
kann man dies ggf. für mein Vorhaben weiterverwenden / ausbauen ?
If Intersect(Target, Range("A1:I9999")) Then …
Bin für jeden Tip sehr dankbar !

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei Änderungen auf einer Tabelle ...
10.05.2017 12:41:17
ChrisL
Hi
Möglich ist vieles, aber es stellt sich die Sinnfrage. Wenn jemand ohne Speichern schliesst, ist es ja egal ob das Makro vorher gelaufen ist oder nicht. Entweder erzwingst du nach dem Abspielen vom Makro das Speichern oder - ich denke es wäre passender - du koppelst das Makro an ein BeforeSave Ereignis:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If MsgBox("Soll vor dem Speichern das Makro laufen?", vbYesNo) = vbYes Then _
Call Makro
End Sub
cu
Chris
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 06:03:33
Lumi
Guten Morgen Chris
mal vorab herzlichen Dank für Deine Antwort und den Vorschlag mit BeforeSave.
die Idee find ich grundsätzlich gut, allerdings such ich nach einer Möglichkeit, die Message-Box mit der Frage "Wollen sie das Makro laufen lassen?" nicht erst beim Beenden/Schliessen der Datei einblenden zu lassen, sondern genau dann, wenn ein bestimmtes Tabellenblatt verlassen wird.
könnte ich Deinen Vorschlag dementsprechend so umbauen/anpassen ?
Grüsse: Lumi
Anzeige
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 06:48:24
Lumi
... hab noch was gefunden auf dem ich vielleicht etwas aufbauen könnte:
Private Sub Worksheet_Deactivate()
Call Makro Test_1
End Sub
Die Frage ist jetzt einfach:
wie prüfe ich, ob auf dem besagten Tabellenblatt Änderungen gemacht wurden ?
denn das Makro Test_1 soll nur dann gestartet werden, wenn auf dem entsprechenden Tabellenblatt Änderungen durchgeführt wurden (neue Datensätze, Mutationen, Löschungen ...)
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 08:23:27
ChrisL
Guten Morgen
'********************** Modul Tabelle *************************
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:I9999")) Is Nothing Then b = True
End Sub

Private Sub Worksheet_Deactivate()
If b Then
If MsgBox("Soll vor dem Speichern das Makro laufen?", vbYesNo) = vbYes Then
b = False
Call Makro
End If
End If
End Sub
'************************* Standardmodul *********************
Public b As Boolean
Sub Makro()
MsgBox "Dummy"
End Sub

cu
Chris
Anzeige
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 09:23:19
Lumi
Hallo Chris
besten dank für Deine grossartige Hilfe.
ich werde jetzt mal diese Bausteine in mein Projekt itegrieren und austesten.
Besten Dank schon mal vorab !
Grüsse:
Lumi
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 11:00:16
Lumi
Hallo Chris
nun habe ich deine tollen Code-Bausteine mal in mein Projekt integriert und getestet.
Funktioniert soweit aber...
das Call Makro (Msgbox Dummy) wird nun bei JEDEM verlassen des entsprechenden Tabellenblattes ausgelöst. (also unabhängig davon, ob auf dem besagten Tabellenblatt eine Änderung vorgenommen wurde oder nicht)
was müsste ich anpassen, damit das Makro nur dann ausgeführt wird, wenn ich eine Mutation auf dem Tabellenblatt gemacht habe ?
Besten Dank für deine Unterstützung in dieser Sache
Gruss: Lumi
Anzeige
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 12:39:15
ChrisL
Hi
Du müsstest den Code nur in die richtigen Module kopieren.
cu
Chris
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 13:43:37
Lumi
Hallo Chris
Danke für deine Antwort
ich habe die beiden oberen Codes hinter die entsprechende Tabelle gelegt.
den unteren Code hab ich in das Modul1 gelegt.
falsch ?
es geht immer noch nicht
Code wird immer ausgeführt, auch wenn ich keine Mutation an dem Tabellenblatt vorgenommen habe
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 14:17:13
ChrisL
Hi Lumi
Das hört sich eigentlich OK an. Dann müsstest du mal die Beispieldatei zeigen...
Und dreh zur Sicherheit noch die beiden Zeilen.
Private Sub Worksheet_Deactivate()
If b Then
If MsgBox("Soll vor dem Speichern das Makro laufen?", vbYesNo) = vbYes Then
Call Makro
b = False
End If
End If
End Sub
cu
Chris
Anzeige
AW: Bei Änderungen auf einer Tabelle ...
11.05.2017 14:21:25
Lumi
makro startet nun gar nicht mehr sondern bleibt stehen bei der Zeile
Call Makro
Fehlermeldung:
Sub oder Function nicht definiert.
... ich schnalls nicht mehr :-(
Beispieldatei owT.
11.05.2017 14:34:49
ChrisL
.
AW: Bei Änderungen auf einer Tabelle ...
12.05.2017 06:46:19
Lumi
guten Morgen
anbei eine ganz kleine Musterdatei.
hier zeigt sich der Fehler, sobald ich vom Tabellenblatt "Datenbank" auf ein anderes Tabellenblatt wechseln will. (nach einer Mutation)
https://www.herber.de/bbs/user/113528.zip
AW: Bei Änderungen auf einer Tabelle ...
12.05.2017 08:58:12
Lumi
Hallo Chris
besten Dank für Deine Antwort. Ich hab das wirklich übersehen, den Code in ein Modul zu legen, statt hinter die Arbeitsmappe.
Soweit so gut ! - nun funktioniert zwar das Makro, allerdings wird dieses jedesmal ausgeführt, wenn ich vom Tabellenblatt "Datenbank" zum Andern wechsel.
Das Makro soll aber nur dann ausgeführt werden, wenn ich auf dem Tabellenblatt "Datenbank" etwas ändere. (sonst soll einfach auf das Andere Tabellenblatt gewechselt werden, ohne Makro")
kann ich Deinen Code dementsprechend so anpassen ?
ich gebe auf... owT
12.05.2017 09:39:37
ChrisL
.
AW: ich gebe auf... owT
12.05.2017 09:43:49
Lumi
... das war sicher nicht mein Ziel :-)
Egal !
Es funktioniert nun mittlerweilen :-)
an was genau es lag weiss ich nicht. Ich habe nochmals eine komplett neue Datei aufgebaut und Deinen Code nochmals 1:1 wie von Dir angegeben kopiert und in die Module gefügt.
Und plötzlich läuft das Makro nun wie gewünscht.
Nochmals ganz, ganz herzlichen Dank für Deine grossartige, geduldige Hilfe
Grüsse und geniesse das kommende Wochen-Ende: Lumi
Anzeige
schön :) Danke für Rückmeldung owT
12.05.2017 09:56:42
ChrisL
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige