PDA

Vollständige Version anzeigen : Abfrage ob EntireRow.Delete


JD124578963
25.07.2012, 07:49
Hallo Leute,

ich hab bei einer Change Aktion im Workbook einige Bedingungen eingefügt, es soll nun so sein, das die Aktion des Löschens einer ganzen Zeile abgefangen wird, dann eine Aktion ausgeführt wird und danach erst die richtige Zeile gelöscht wird.

Nur ist jetzt bei der Abfrage ob die ganze Zeile gelöscht wird automatisch, wird nun auch die zeile gelöscht dabei will ich nur wissen ob der User das macht :(

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeile As Integer

Application.EnableEvents = False
zeile = Target.Row

If Target.Cells.Count > 1 Then
application.undo
else
If Target.EntireRow.Delete = True Then
Application.Undo 'funktioniert hier nicht :(
'aktionen die ausgeführt werden
Cells(zeile, 1).EntireRow.Delete
End If
Else
'einfügen in ein anderes Tabellenblatt
End If

Application.EnableEvents = True

End Sub

Viele Grüße
JD

chris-kaiser
25.07.2012, 10:16
Hi

löschen kann nicht abgefragt werden, zumindest kenne ich kein Ereignis dafür.

Aber setzte doch einfach einen Blattschutz!
dann können die USER nicht manuell löschen.

Bei workbook open sollte der Blattschutz mit Userinterfaceonly:=true gesetzt werden. Dann können Makros bei Blättern mit Blattschutz ausgeführt werden.

JD124578963
25.07.2012, 14:33
Hi Chris,

ich möchte halt eigentlich, das der benutzer das machen kann, ich will halt vorher nur in einem anderen Tabellenblatt automatisch eingetragen haben, welche zeile er löscht und wie der wert dabei in der ersten spalte war. Deshalb hab ich gedacht es gäbe vielleicht ne Möglichkeit das vorher abzufangen

Hast du dazu eventuell eine Idee?

Grüße
JD

chris-kaiser
25.07.2012, 14:53
Hi

löschen kann nicht abgefragt werden, zumindest kenne ich kein Ereignis dafür.


So was ähnliches könnte in einer freigegebenen Arbeitsmappe nachvollzogen werden, aber zumeist überwiegen die Nachteile die eine freigegebene Arbeitsmappe mit sich ziehen.

EarlFred
25.07.2012, 15:00
Hallo JD,

Else
'einfügen in ein anderes Tabellenblatt

es ist hoffnungslos, alles nachvollziehen zu wollen, was die User tun - oder teilweise mit so gewaltigem Aufwand verbunden, dass es leichter ist, Chris' Rat zu folgen, eine Sperre aufzuerlegen und es einem Code, z. B. hinter einem Button, zu überlassen, die Zeile zu löschen und zu archivieren. Dass UNDO allein für Useraktionen nutzbar ist (und zudem mit großer Vorsicht zu genießen ist) hast Du ja herausgefunden.

Es ist erfahrungsgemäß auch nicht immer ratsem, die User "alles" machen zu lassen...

Grüße
EarlFred