VBA: Excel MessageBox

Hallo zusammen,
ich habe diverse Excel-Formulare auf einem Rechner liegen, die mehrere Personen bearbeiten können und sollen. Nun jedoch würde ich gerne folgendes realisieren.

Excel sollte feststellen, ob in diesem Formular etwas geändert worden ist. Wenn ja, soll beim Schließen des Sheets eine MessageBox kommen, in der darauf hingewiesen wird, dass man mich informieren soll, dass es eine Änderung gab.

Kennt da jemand eine Möglichkeit? Bestimmt in VB realisierbar, oder?

Gruß
jugendsani

Wichtig!

Die Meldung darf nur in den entsprechenden Sheets kommen, nicht bei jeder Tabelle!!

Hi jugendsani,

  • Rechtsklick auf den Reiter mit dem Tabellennamen > Code anzeigen auswählen
  • der VBA-Editor üffnet sich mit dem Codemodul der angeklickten Tabelle
  • oben gibt es zwei Dropdowns: im linken steht „Allgemein“
  • in diesem „Worksheet“ auswählen
  • im rechten Dropdown „Change“ auswählen > es erscheint eine Prozedur mit der Überschrift
    Private Sub Worksheet_Change(ByVal Target As Range)
  • in diese kannst Du entsprechenden Code einfügen. Da ich Deine Frage so verstehe, als ob nur eine Meldung angezeigt werden soll, würde reichen
    MsgBox „Hier wurde etwas geändert. Bitte den … verständigen.“, , " Achtung"
    Dieser Text muß zwischen ‚Private Sub‘ und ‚End Sub‘ stehen.

Diesem Ablauf wiederholst Du für jede einzelne Tabelle in jeder Arbeitsmappe. Am besten kopierst Du dabei die Zeile mit ‚MsgBox…‘ in die Zwischenablage, dann geht’s schneller.

HTH.

Markus
_______________
Und Sterne sammel ich noch immer…

Hi!

Danke für die Antwort, klasse Sache :smile:

Diese Möglichkeit ist schonmal nicht schlecht - aber ist es möglich, das die MsgBox erst nach speichern des Sheets auftaucht, falls Änderungen durchgeführt worden sind?

Gruß
jugendsani

Diese Möglichkeit ist schonmal nicht schlecht - aber ist es
möglich, das die MsgBox erst nach speichern des Sheets
auftaucht, falls Änderungen durchgeführt worden sind?

Hallo jugendsani,

wann soll diese Meldung kommen und was soll sie beinhalten?

Dann wenn die Mappe geschlossen wird?
Und was soll in der Meldung stehen? Nur „kontaktiere den Admin“ oder so?

Einer von möglichen vielen Ansätzen ist,
Alt+F11, Einfügen—Modul,
Dortrein schreibst du

Option Explicit
Public Aenderung as boolean

Doppelklick auf „Diese Arbeitsmappe“, dortrein kommt:

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Aenderung = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Aenderung Then MsgBox „Admin verständigen, Telefon 123456“
End Sub

Gruß
Reinhard

1 Like

Hi!

Also die Meldung soll erscheinen, wenn eine Mappe gespeichert wird, aber nur wenn in dieser was geändert worden ist. Zum Beispiel wenn der Inhalt einer Zelle geändert wurde.

Als Meldung reicht eine herkömmliche MsgBox einfach mit nem Text wie „xyz informieren“.

Gruß
Jugendsani

PS: Der Code funzt bei mir leider nicht :frowning:

Jetzt geht auch der Code :wink:

Geht die Meldung auch nach dem Speichervorgang?

Jetzt geht auch der Code :wink:

Geht die Meldung auch nach dem Speichervorgang?

Hallo Sani,

„nach“ ist so eine Sache.

Markus hat dir ja schon beschrieben wie es in einem Tabellenblattmodul läuft.
In „DieseArbeitsmappe“ geht das genauso für die ganze mappe.
Wähle in Mitte oben Workbook aus, dann rechts in der Auswahl das Ereignis daß du willst.

Ich hatte Workbook_BeforeClose genommen, lösch das, wähle Workbook_BeforeSave und schreibe in diesen prozedurrumpf die gleiche Zeile rein, die ich nahm.

Dann kommt die MsgBox beim/vorm Speichern.

Ich weiß ja nicht wer da alles deine Mappe benutzt, meinste im Ernst 100% aller reagieren auf die MsgBox und kontaktieren dich?

Gruß
Reinhard

Hi Reinhard,

danke! Ich probier das ganze nachher mal aus.

Naja, das wird vorerst so sein. Der Rechner hat ja noch kein Internet. Sobald dass der Fall ist, wird das Dokument dann per Mail an mich geschickt, also auch automatisiert.

Gruß
Jugendsani

Hi,

ganz habe ich (und anscheinend auch Reinhard) nicht verstanden, was Du da eigentlich willst. Wenn es so ist, daß die Aufforderung nur erscheinen soll, wenn tatsächlich irgendwas in der Mappe geändert wurde, muß der Code zwischen „Sub…“ und „End Sub“ so lauten

_If ActiveWorkbook.Saved = False Then_ MsgBox "Hier wurde etwas geändert. Bitte ... verständigen.", , " Achtung"

HTH.

Markus

1 Like

genau so wollte ich das! :smiley:

danke jungs…! :smile: