Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Einträge kopieren und löschen, wenn Eintrag erfolgt
#1
Hallo zusammen,
ich habe eine Datei zur Verwaltung und Ausgabe von Gebieten. Die drei Spalten E, F und G beziehen sich auf den aktuellen Bearbeiter des Gebietes. Die Spalten C und D stellen den jeweils letzten Bearbeiter dar sowie das Datum, an dem er es mir zurückgegeben hat.
Nun möchte ich mir händisches Eingreifen ersparen. Ist es möglich, dass, sobald ich ein neues Datum in Spalte G eintrage (das Gebiet also vom akt. Bearbeiter zurückgegeben wurde), dieses in Spalte D kopiert wird? Und bei der Gelegenheit dann auch E in C. Danach sollen die drei Spalten E, F und G bereinigt werden.
Ich hoffe, ich habe es verständlich formuliert. Ich denke, mit einem Makro sollte das möglich sein, oder? Bin da leider noch Neuling. Vielen Dank vorab für eure Hilfe!


Viele Grüße,
Christian


Angehängte Dateien
.xlsx   Beispieldatei Gebiet.xlsx (Größe: 9,52 KB / Downloads: 3)
Antworten Top
#2
Das ins Tabellenblatt
Schnell geschrieben, müsste gehen


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G:G")) Is Nothing Then kopieren
End Sub

Sub kopieren()
Set merker = ActiveCell

With Worksheets("Tabelle1")
Range("E2:E2000").Copy
Range("C2:C2000").PasteSpecial Operation:=xlPasteSpecialOperationNone, SkipBlanks:=True, Transpose:=False
Range("G2:G2000").Copy
Range("D2:D2000").PasteSpecial Operation:=xlPasteSpecialOperationNone, SkipBlanks:=True, Transpose:=False
Range("E2:E2000,F2:F2000, G2:G2000").Clear
merker.Select
End With

End Sub
Antworten Top
#3
Hallo Davidp,

vielen Dank für deine Hilfe. Vom Ansatz her scheint es gut zu sein, jedoch stürzt Excel am Ende ab, weil er nach dem Prozess abwechselnd die Spalte C und D markiert in Endlosschleife. Wie kann man das noch beheben oder woran liegt das?

Viele Grüße,
Christian
Antworten Top
#4
Moin!
Ja, das Makro ruft sich immer wieder selbst auf.
Deshalb schaltet man die Events temporär aus.
Aber Vorsicht!
So etwas sollte man immer mit Fehlerbehandlung machen:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrExit
If Not Intersect(Target, Range("G:G")) Is Nothing Then
  Application.EnableEvents = False
  kopieren
End If
ErrExit:
Application.EnableEvents = True
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo zusammen!

Ralf, vielen Dank, dieser Fehler ist dadurch schonmal beseitigt. Nur ist mir jetzt noch ein weiteres Problem aufgefallen. Die Aktion bezieht sich ja nun immer auf die ganze Spalte. Das heißt, das mit einem Gebiet, das ich zurückbekomme, auch alle anderen Daten in anderen Zeilen überschrieben werden, was ja nicht sein soll. Es müsste eigentlich immer nur die Aktion in der Zeile bewirken, in der gerade das Rückgabedatum in G eingetragen wurde. Dazu jemand eine Idee?

Gruß
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste