Anzeige
Archiv - Navigation
1048to1052
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

Change-Ereignis bei Klick in Zelle

Change-Ereignis bei Klick in Zelle
12.02.2009 08:19:00
Specke
Hallo Experten,
ich habe ein eTabelle, in der die aktuelle Zeilen mit verschiedenen Defaultwerten (z.B. Datum und Uhrzeit) gefüllt wird, wenn in Spalte A ein Wert eingetragen wird.
Wenn ich in eine gefüllte Zelle von Spalte A klicke, um den Wert in die Zwischenablage zu kopieren (der Wert wird nicht geändert), wird wiederum das Change-Ereignis ausgeführt. Dabei werden das Datum und die Uhrzeit verändert. Das soll aber nur beim Neueintrag passieren.
Wie kann ich es erreichen, dass das Change-Ereignis nur bei einer tatsächlichen Änderung ausgeführt wird?
Danke und Gruß
Specke

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
bei mir nicht owT
12.02.2009 08:50:00
D.Saster
Events: Change, Calculate...
12.02.2009 08:51:00
Renee
Hi Specke,
Du bringst da 2 Sachen durcheinander und das bei deinem Level!
Eereignisprozeduren kannst du mit Application.Events = False/True aus- und einschalten.
Du redest aber vermutlich vom .Calculate Ereignis und das Neuberechnen der Tabelle wird über die Option Application.Calculation gesteuert. Mit grosser Wahrscheinlichkeit hast du Formeln wie =HEUTE() oder =JETZT() in deiner Tabelle. Darum musst du mal genauer erklären, was du wann und wie erreichen willst.
GreetZ Renée
AW: Events: Change, Calculate...
12.02.2009 09:21:00
Specke
Hallo,
ich glaube ich habe mich etwas unglücklcih ausgedrückt. Also nochmal etwas genauer:
Ich habe ein Tabellenblatt , in den Anwender in Spalte A einen Wert eintragen können. Dieser Eintrag löst das Worksheet_Change-Ereignis aus. Dort habe ich hinterlegt, dass in der aktuellen Zeile z.B. in Spalte B der aktuelle Tag eingetragen wird, in Spalte C ein Dropdownmenü mit 4 Auswahlmöglichkeiten usw.
Wenn ich z.B. am nächsten Tag in die Tabelle gehe und mir den Wert des Anwenders aus Spalte A kopieren will, dann wird in Spalte B wieder der aktuelle Tag eingetragen. Das soll aber nicht passieren, weil der Eintrag ja schon gestern gemacht wurde und ich nur den Wert in die Zwischenablage kopiert habe.
Wenn allerdings der Anwender am nächsten Tag hergeht und den Wert in Spalte A verändert, dann soll schon das aktuelle Datum eingetragen werden.
Ich habe mal eine sehr abgespeckte Version hochgeladen.
https://www.herber.de/bbs/user/59373.xls
Danke und Gruß
Specke
Ich möchte also erreichen, dass
Anzeige
Das kann nicht sein...
12.02.2009 09:36:00
Renee
Hi Specke,
Wenn ich z.B. am nächsten Tag in die Tabelle gehe und mir den Wert des Anwenders aus Spalte A kopieren will, dann wird in Spalte B wieder der aktuelle Tag eingetragen.
Dein Code macht nur dann Veränderungen Spalte B:C, wenn in Spalte A etwas geändert wird und ein Kopieren würde nur dann eine Änderung machen, wenn das Ziel (des Pastes) in der Kolonne A liegt!
Als (weiterer) Tipp: Wenn du in einem Change_Event Veränderungen von Zelle vornimmst, dann schalte das Event-Handling vorübergehend aus:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
Cells(Target.Row, 2) = Time
Cells(Target.Row, 3).Validation.Delete
Cells(Target.Row, 3).Validation.Add Type:=xlValidateList, _
Operator:=xlBetween, Formula1:="000,004,009,015"
Application.EnableEvents = True
End If
End Sub


GreetZ Renée

Anzeige
und ob
12.02.2009 09:56:00
Specke
Hallo Renée,
wenn ich den Wert aus Spalte A kopiere (reinklicken und kopieren) und nicht die komplette Zelle, dann wird das Change-Ereignis angesprochen.
Ich muss aber den Inhalt der Zelle kopieren, da meine Weiterverarbeitung sonst nicht funktioniert.
Gruß Specke
Mit dem Editieren (F2) einer
12.02.2009 10:02:00
Renee
Zelle, löst Du das Change Ereignis aus, davon hast du aber vorher nix gesagt, Specke.
Ich muss aber den Inhalt der Zelle kopieren
Musst Du den GANZEN oder nur einen TEIL des Inhalts kopieren ? oder was...
Mit GANZ gehts auch ohne 'Hinein-Klicken'. Mit TEIL leider nicht...
Dann musst Du Dir eine andere Lösung überlegen: z.B. Kopieren via Makro, oder alter/neuer Wert zwischenspeichern.
GreetZ Renée
Anzeige
verlasse die Zelle mit ESC owT
12.02.2009 10:46:00
D.Saster
Danke für die Hilfen
12.02.2009 13:28:00
Specke
Hallo,
ich habe es jetzt so gelöst:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
strNeuerWert = Target.Value
Application.Undo
strAlterWert = Target.Value
If strNeuerWert = strAlterWert Then
Application.EnableEvents = True
Exit Sub
Else
Target.Value = strNeuerWert
End If
Application.EnableEvents = True
End Sub


Gruß Specke

Congratulation! (...wüüüürggg) (owT)
12.02.2009 14:02:00
Renee

Dein Verhalten ist absolut unangemessen owT
12.02.2009 15:09:00
Specke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige