Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1412to1416
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

Zeileinlöschung erkennen

Zeileinlöschung erkennen
11.03.2015 20:17:24
Werner
Hallo Forum,
ich habe eine Workbook_SheetChange-Routine. Allerdings fehlt mir das Wissen, wie ich erkennen kann, dass die vorgenommene Änderung eine Zeilen(Bereichs)-Löschung ist.
Woran kann ich solch eine Löschung erkennen?
Gruß aus dem Schwabenland
Werner

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeileinlöschung erkennen
11.03.2015 20:23:04
Rudolf
deine Workbook_SheetChange-Routine Sollte für uns sichbar sein, damit wir dir sagen können welcher Befehl wo zu finden ist.

AW: Zeileinlöschung erkennen
11.03.2015 20:46:28
Werner
Hallo Rudolf,
Meine Workbook_SheetChange-Routine ist sehr umfangreich, weil ich darin die Daten des gesamten Blattes neue berechne. Deshalb macht es wenig Sinn, die Routine hier einzustellen.
Es muss doch ein Kennzeichen dafür geben, dass die im angegebenen "Range(Target.Address).Select" angesprochenen Zeilen nicht verändert, sondern gelöscht wurden.
Gruß
Werner

AW: Zeileinlöschung erkennen
12.03.2015 00:14:08
Rudolf
Nun Werner, Excel ist ein Programm das unglaublich viel kann....nur Wunder nicht. Wie bitte soll Excel über einen bestimmten Zeitraum erkennen ob du da etwas geändert oder gelöscht hast....?
Das was man machen könnte ist, das jede Bewegung die du da machst in einem Extra Blatt Dokumentiert wird. Aber so etwas ist ein großer Aufwand. Ich glaub nicht das es das ist was du im Hinterstübchen meintest.
Wenn eine Zeile oder Zelle gelöscht wurde -- kannst du sich sehen--ein anderer nicht. Ich glaub du denkst da an eine Attribut Kennung. Die ist mir noch aus Dos Zeiten bekannt. Hier kenne ich die nicht.

Anzeige
4 Möglichkeiten, was geschehen kann, ...
12.03.2015 02:17:34
Luc:-?
…Werner;
die Zeile/Spalte bzw ein Bereich kann auf 1× in Gänze…
1. mit anderen Werten überschrieben (aufkopieren, Paste),
2. gelöscht (Werte bzw alle Inhalte entfernen, Clean),
3. eingefügt (auch einkopieren, Insert) oder…
4. entfernt (Delete) wdn.
Target.Address zeigt in diesen Fällen stets die Adresse des ganzen Bereichs. Falls es sich dabei um eine oder mehrere ganze Zeilen/Spalten handelt, kann sich an dieser Angabe letztlich auch nicht zweifelsfrei feststellen lassen, was nun wirklich passiert ist, denn im 4.Fall wird zwar tatsächlich die Adresse des entfernten Bereichs gezeigt, aber der wird ja sofort wieder durch Nachrücken gefüllt. Da das schon vor Auslösung des Ereignisses passiert, kann auf dieser Basis kaum eine umfassende Kontrolle aufgebaut wdn.
Die einzige Möglichkeit, das mit _Change zu erreichen, ist wohl das Festlegen eines definierten Namens für den ganzen zu überwachenden Bereich (hier naRelBerTest) blatt- bzw mappenbezogen (hier Letzteres) und die Vorgabe einer AdressKonstanten (hier adRelBer) für diesen, mit der er einerseits stets wiederhergestellt und andererseits seine aktuelle Adresse mit dieser vgln wdn kann, denn die ändert sich beim Entfernen einer ganzen Zeile oder Spalte des überwachten Bereichs automatisch. Wenn der Nutzer dabei aber keine ganze BlattSpalte bzw -Zeile entfernt oder anderenfalls die vormarkierte Entfernungs­Option nicht wählt, ändert sich die Adresse dieses Bereichs nicht und das entfernende Löschen kann auf diese Weise auch nicht festgestellt wdn (es sei denn, das HauptPgm merkt sich zumindest auch noch alle Inhalte dieses Bereichs)!
Private Sub Worksheet_Change(ByVal Target As Range)
Const adRelBer$ = "$A$11:$D$13", naRelBer$ = "Test"
Dim relBer As Range, aWb As Workbook
If Not Intersect(Target, Me.Range(adRelBer)) Is Nothing Then
Set relBer = Range(naRelBer): Set aWb = Me.Parent
If relBer.Address  adRelBer Then
MsgBox "Bereich " & Target.Address(0, 0) & " wurde entfernt!", _
vbExclamation, "Entfernendes Löschen"
aWb.Names(naRelBer).RefersTo = "=" & adRelBer
End If
Set relBer = Nothing: Set aWb = Nothing
End If
End Sub
Als einzige qualifiziertere Möglichkeit bliebe wohl nur die Änderungs­nachver­folgung (in freige­gebenen Mappen), aber wie du da evtl mit VBA heran­kommst, musst du wohl selbst herausfinden. Das ist mir jetzt zu langwierig aufwendig…
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Zeileinlöschung erkennen
12.03.2015 07:18:36
daniel
Hi
Probieren mal folgendes
Erstelle im SelectionChange-Event einen Namen mit dem Target als Zellbereich.
Überprüfe dann diesen Namen im Change-Event. Wenn die Zellen gelöscht wurden, müsste dieser Name den Bezugfehler enthalten.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige