Eigentlich läuft dein erster Code mit den Ereignis(sen) ganz gut.
Aber bei je einer Ereignisprozedur in jeder Klasse eines Tabellenblattes
produzierst du eine Kettenreaktion und ich vermute hier die Ursache für
die Fehlfunktion beim "Letze Zeile" finden.
Beispiel der ersten Prozedur
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'das ist eine Prozedur auf Grund eines Ereignisses der Klasse Tabelle1
'Variable für Zeile definieren
Dim Zeile As Long
'Target braucht keine Definition - wird ja vom Ereignis geliefert!
'Prüfung - ob das Ereignis zutreffend, denn die Prozedur wird immer angestoßen
Set Target = Intersect(Target, Range("A1:A1000"))
'Treffer??
If Target Is Nothing Then Exit Sub
'Prüfung zutreffend (If Target = ... then ... ist schlechter Stil!)
'Prüfe auf Text, da nehm ich .Formula
If Target.Formula <> "Verschieben" Then Exit Sub
'Zeile festlegen
Zeile = Target.Row
'Zeilenbereich definieren
'kopieren
'*********************************************************************
'Falle Nr. 1 - steht in der Zieltabelle auch eine Ereignisklasse, dann
'wird die ebenfalls aktiviert
'*********************************************************************
'Ereignisse ausschalten
Application.EnableEvents = False
Range(Cells(Zeile, 2), Cells(Zeile, 50)).Copy _
Destination:=Sheets("Laufende Bewerbungen").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
'Ereignisse einschalten
Application.EnableEvents = True
'Zeile = Target.Row unnötig. da unverändert
'löschen
Range(Cells(Zeile, 2), Cells(Zeile, 50)).ClearContents
'*********************************************************************
'Falle Nr. 2 - das Löschen einer Zelle im aktuellen Tabellenblatt
'aktiviert auch diese / seine Ereignisklasse erneut!
'was zwar hier nicht schadet aber unnötig
'*********************************************************************
End Sub
|