Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
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

Meldung machen, wenn in ben. Bereich was passiert

Meldung machen, wenn in ben. Bereich was passiert
Jörg-HH
Hallo zusammen im neuen Jahr
ich habe in meiner umfangreichen Datei einen Bereich von 56 Zellen, in denen eine Menge schöne Formeln stehen. Dieser Bereich ist im Vergleich zur Datei recht neu, vielleich ein halbes Jahr oder so, und offensichtlich gibt es im Code irgendeinen alteingesessenen Formelwurm, der ausgerechnet da sein Weidegebiet hat.
Neulich hatte ich mal zufällig entdeckt, daß sämtliche Formeln abgefressen sind. Die Zellen sind leer. Ich hab die brav repariert und nach der Ursache gesucht - diese vermeintlich auch gefunden, weiß nicht mehr, was ich zu finden geglaubt hatte...
Nu sind die blöden Dinger wieder wech, und mir fällt keine Prozedur ein, die das gemacht haben könnte. Alles, was ich seit meiner letzten Arbeit an der Datei bewußt ausgelöst habe, hab ich schon nachgestellt - Fehlanzeige.
Jetzt will ich den Bereich benennen und dann einen Wachhund davor setzen: Der soll aufpassen und bellen, wenn in dem Bereich durch was auch immer eine Löschung stattfindet (also entweder explizit Delete oder durch reinschreiben von "") - möglichst eine msgbox, die mir sagt, daß grad 'ne Formel verschwindet wird und an welcher Stelle im Code ich diesen Formelfresser finden kann...
Hat jemand 'ne passende Idee...?
Grüße - Jörg
Oh-ho-ho! Da hat der Weihnachtsmann dir...
02.01.2011 15:56:15
Luc:-?
…aber ein schönes Geschenk gemacht, Jörg…! ;-)
Schade um die schönen Formeln! Weiß ja nicht, ob 'ne Worksheet_Change-Proz was bringen würde, aber wäre wohl einzige Möglichkeit den Täter in flagranti zu erwischen. Ansonsten evtl ab und an bzw bei Benutzung überprüfen und fehlende Fml automatisch neu anlegen…
Gesundes Neues!
Luc :-?
:-)
02.01.2011 16:46:57
Jörg-HH
stimmt, Luc ...bekam hier zuhaus auch grad den Tip, einfach zu warten - vielleicht sind die Formeln einfach noch auf Party und kommen morgen wieder - da is ja erster Arbeitstag...
so long - Jörg
:-)
AW: Meldung machen, wenn in ben. Bereich was passiert
02.01.2011 16:06:19
Daniel
Hi
könntest du so vorgehen:
1. in einem allgemeinen Modul eine Globale Variable anlegen, dh direkt unter Option Explicit folgendes eintragen:
Public AktuellesMakro as String
2. jetzt fügst du am anfang jeder Prozedur folgende Zeile ein
AkutellesMakro = "Name des aktuellen Makros"
3. in das Modul des Tabellenblatts mit mit dem zu überwachenden Bereich fügst du dann folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:C10")) Is Nothing Then
MsgBox AktuellesMakro
End If
End Sub
4. jetzt überprüfst du noch, ob irgendwo im Makro die Events ausgeschaltet werden (Application.EnableEvents = False) und kommentierst diese Zeile aus, da sonst das Makro aus schritt 3 nicht ausgeführt wird.
5. jetzt startest du die Makros.
wenn der angegebene Zellberich verändert wird, sollte das Makro aus Schritt 3 anspringen und dir das Makro melden, daß die Änderung verursacht hat (vorausgesetzt, du hast schritt 2 für jedes infragekommende Makro entsprechend ausgeführt).
Gruß, Daniel
Anzeige
AW: Meldung machen, wenn in ben. Bereich was passiert
02.01.2011 16:10:30
Daniel
dh.
einfacher ist folgendes:
Schreibe anstelle der Msgbox einfach STOP
das Makro stoppt dann an dieser Stelle.
Jetzt kannst du das Makro im Einzestepmodus durchgehen (mit F8 die nächste Zeile aufrufen).
nach Abarbeiten des Events-Makros springt der der Ablauf wieder zur Auslösenden Prozedur zurück und du hast deinen Übeltäter gefunden.
Das mit der Variable kannst du dir dann sparen.
Gruß, Daniel
klappt...
02.01.2011 16:51:36
Jörg-HH
Hi Daniel,
probiert - läuft. Warum kann ich nicht gleich ein Undo dranhängen? Dachte mir, dann würde ich erst den Fehler repariert bekommen und dann zum Wurm geführt werden... gibt aber 'ne Fehlermeldung bei Undo...
If Not Intersect(Target, Range("_ReservierterBereich2")) Is Nothing Then
Stop
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
Anzeige
AW: klappt...
02.01.2011 17:05:00
Daniel
Hi
nein, UNDO funktioniert nicht bei Änderungen, die per Makro gemacht werden.
das geht nur bei händischen Aktionen.
ansonsten, Gerds Metohde ist doch noch besser.
wenn das Makro versucht geschützte Zellen zu ändern, gibts nen Fehler und der Ablauf stoppt an der Stelle, die den Fehler verursacht, also direkt da, wo die Zellen geändert werden.
davor solltest du aber prüfen, ob nicht irgenwo ein ON ERROR RESUME NEXT im Code steht, was einen Abbruch bei einem Fehler unterdrücken würde.
Gruß, Daniel
aha...
02.01.2011 18:17:01
Jörg-HH
...deswegen funktionierte Undo zunächst und dann nicht mehr - erst per Hand probiert, dann mit'm Codeschnipsel.
Also dann werd ich mal den Schutz in Gang setzen...
Danke für die Tips...!
Jörg
Anzeige
AW: Meldung machen, wenn in ben. Bereich was passiert
02.01.2011 16:26:35
Gerd
Hallo Jörg.
markiere im Formeln-Blatt alle Zellen. Entferne unter Format-Zellen-Ausrichtung den Haken bei "Schutz",
markiere den Formel-Bereich, setze unter Format-Zellen-Ausrichtung den Haken bei "Schutz".
Richte den Blattschutz für das Formeln-Blatt ein.
Greift der Code auf den Formelbereich zu, gibt es einen "Hänger".
Gruß Gerd
...was kann "Schutz" mir dann sagen?
02.01.2011 16:49:05
Jörg-HH
Hi Gerd
sagt mir der Hänger dann, wo ich suchen muß...?
Grüße - Jörg
AW: ...was kann "Schutz" mir dann sagen?
02.01.2011 16:59:20
Gerd
Hi Jörg,
jetzt bist Du aber etwas akademisch. Die Bedeutung der gelben Markierung im Editor sollte dir eigentlich geläufig sein.
Gruß Gerd
also Schutz...
02.01.2011 18:21:45
Jörg-HH
Hi Gerd,
Volkes Stimme sagt "Schutz-Methode wählen" :-)
Jetzt weiß ich auch, was du mit "gelbe Markierung" meinst - da gieps doch diese Geschichte mit dem Wald un den vielen Bäumen... ich glaub, in dem Wald war ich grad ;-)
Danke auch dir!
Jörg
Anzeige
AW: Meldung machen, wenn in ben. Bereich was passiert
02.01.2011 16:22:31
Reinhard
Hallo Jörg,
ist das Vba-Projekt auch so gewaltig? Such doch da mal Projektweit nach "Delete, "", o.ä.
Und sichere dir die 56 Formeln. Denn wenn du das mit dem Worksheet_Chabge machst, kommt die Meldung erst nachdem schon im Bereich eingefügt/ gelöscht wurde.
Wie wäre es, den Bereich zu schützen?
Gruß
Reinhard
zu groß...
02.01.2011 16:44:38
Jörg-HH
Hallo Reinhard
ca. 120 ArbBlätter, ca. 25MB - da ist im Code bestimmt hundert Mal Delete oder ""
bissl mühsam - außerdem merk ich grad, daß ich hier schon wieder was lerne :-) nämlich wie man es professionell abfängt, wenn man solchen Murks gezaubert hat...
Grüße - Jörg
Anzeige
Rückmeldung
02.01.2011 21:43:07
Jörg-HH
hallo Leute - falls es interessiert: Formelfresser gefunden! Den hab ich selbst gezüchtet:
Ich hatte im Code über einen Bereich, der aus zwei Zeilen bestand, ClearContents laufen lassen - also D400:L401, aber als benannten Bereich. Ausgerechnet zwischen diese beiden Zeilen hatte ich kürzlich die erwähnten neuen Zellen eingefügt, wodurch sich der Bereich natürlich vergrößert, und der Code fegt selbstverständlich gnadenlos den Bereich leer, den er fegen soll...
:-))
AW: Na dann -- Problem geloest! :-) o.r.T.
02.01.2011 22:14:28
Gerd
Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige