Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
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

Worksheet_Change Ereigniss

Worksheet_Change Ereigniss
23.10.2008 14:16:34
Steffen
Ich möchte bei einem Chance Ereigniss ein Datum in eine Zelle schreiben die in einer anderen Spalte steht welche ich dynamisch ermittle.
Mein Problem ist nur wenn sich auch Text in der geänderten Zelle befinden soll das Datum in die Zelle der Spalte geschrieben werden. Wenn ich die aktive Zelle mit "entf" lösche dann ist dies auch ein Chance Ereigniss welches sich aber anders auswirkt. Bei einer Änderung des Textes einer Zelle rutscht der Cursor nach und und beim löschen der Zelle bleibt er da wo er ist. So kann ich nie in der selben Zeile das Datum schreiben lassen da ich per Offset nie sagen wo sich vorher der Cursor befunden hat.
Hier mal mein Code vieleicht versteht man es ja ^^

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim d As Range
Dim e As Double
Dim f As Range
Dim spalte_merken, zeile_merken As Double
Dim aktuelle_spalte As Double
For Each d In Range("A2:BY2")
If d.Value = "Wann wurde dieser Datensatz erstellt ?" Then
spalte_merken = d.Column
If ActiveCell.Column  spalte_merken Then 'Nur wenn ungleich der Spallte "Wann wurde dieser  _
Datensatz erstellt das datum eintragen"
e = d.Column
aktuelle_spalte = (e - ActiveCell.Column)
ActiveSheet.Range(ActiveCell, ActiveCell).Offset(rowOffset:=-1, columnOffset:=aktuelle_spalte).  _
_
Value = Date
End If
End If
Next
End Sub


Gibt es dafür eine Lösung ?
Danke und Gruß
Steffen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change Ereigniss
23.10.2008 14:48:00
Andi
Hi,
leider verstehe ich Deine Problembeschreibung wenig bis garnicht.
Vielleicht hilft Dir aber der Hinweis auf das Target-Objekt weiter, welches das Change-Ereignis anbietet; dieses Target-Objekt stellt die geänderte Zelle dar.
Mit
Target.Offset(0,3) = Date
kannst Du zB ein Datum in die Zelle 3 Spalten rechts von der geänderten schreiben.
Schönen Gruß,
Andi
AW: Worksheet_Change Ereigniss
27.10.2008 07:27:01
Steffen
Hallo Andi,
wollte mich nochmal bei dir bedanken die Lösung mit target.offset funktioniert Prima.
Gruß
Steffen
AW: Worksheet_Change Ereigniss
23.10.2008 14:52:00
David
Hallo Steffen,
so ganz verstehe ich nicht, was du überhaupt mit dem Makro bezweckst, aber zumindest die Aussage
da ich per Offset nie sagen wo sich vorher der Cursor befunden hat
kann ich wiederlegen.
Mit diesem Beispielcode kannst du das testen:

Private Sub worksheet_change(ByVal target As Range)
If Not Intersect(target, Range("A1")) Is Nothing Then
MsgBox Selection.Address
End If
End Sub


Wenn du in A1 Enter drückst, bekommst du B1 als Rückgabewert (bei mir ist Enter nach rechts eingestellt)
Wenn du alternativ Entf drückst, bekommst du A1.
Mit .Row oder .Column kannst du auch eine der beiden Angaben separat erhalten.
Wenn dir das nicht hilft, musst du bitte das Problem genauer erklären.
Gruß
David

Anzeige
AW: Worksheet_Change Ereigniss
23.10.2008 15:43:00
Steffen
Hallo David,
deine Lösung kommt meinem Problem fast nahe wenn ich Enter drücke dann passiert bei mir gar nichts bei "Entf" bekomme ich den den Rückgabewert "$A$1". Wenn dann brauche ich beider Rückgabewerte aber vieleicht liegt es auch daran das ich mich in der Excel Version geiirt habe es ist nicht 2000 sondern nur 97.
Um die Aufgebenstellung mal genauer zu beschreiben :
Ich möchte ein Datum eingefügt haben wenn in einem Bestimmten Berreich einer Zeile ein Wert eingeben wird. Der Berreich erstreckt sich von A"x" -R"x" und dann soll in Spalte "R" das aktuelle Datum eingetragen werden.
Die Spalte R hat bei mir eine Überschrift die ich per for each gesucht habe und mir die Spaltennummer ermittelt habe das man auch mal dynamisch eine neue Spalte einfügen könnte ohne das das Script versagt.
Ja das ist eigentlich alles simples Datum einfügen.
Gruß
Steffen
Anzeige
AW: Worksheet_Change Ereigniss
23.10.2008 15:48:00
David
Hallo Steffen,
wenn du nur in die Zelle gehts und Enter drückst, löst das keine Change-Ereignis aus, du musst vorher F2 für den Bearbeitungsmodus drücken!
Dein Anliegen geht sicher einfacher zu lösen. Falls du das heute noch brauchst, setze die Frage wieder auf offen, das schaffe ich nicht mehr.
Gruß
David
AW: Worksheet_Change Ereigniss
23.10.2008 15:51:07
Steffen
so ich habe jetzt noch etwas zu deinem Script rausgefunden :
If Not Intersect(target, Range("A1")) Is Nothing Then
MsgBox Selection.Address
End If
also wenn ich in A1 etwas ändere bekomme ich den Rückgabewert A2 weil das worksheet_change ereigniss eine Änderung festgestellt hat. Das müßte jetzt eingentlich helfen auswerten zu können wo der Cursor stand und dementsprechend müßte ich per Offset das Datum in die Richtige Zelle in der selben Zeile schreiben können. So kompliziert hatte ich mir das alles nicht vorgestellt naja ^^
Ich bedanke mich tausendmal für die schnelle Hilfe und werde es jetzt erstmal testen das wird ne weile dauern ;-)
Anzeige
AW: Worksheet_Change Ereigniss
23.10.2008 15:58:06
David
Hallo Steffen,
vielleicht hilft dir dies, um deinen Ansatz zu vereinfachen:

Sub test2()
Dim Suchadresse, Suchzeile, suchspalte
Suchadresse = Cells.Find("Test", LookIn:=xlValues).Address
Suchzeile = Cells.Find("Test", LookIn:=xlValues).Row
suchspalte = Cells.Find("Test", LookIn:=xlValues).Column
MsgBox "Adresse: " & Suchadresse & Chr(13) & "Zeile: " & Suchzeile & Chr(13) & "Spalte: " &  _
suchspalte
End Sub


Gruß
David

AW: Worksheet_Change Ereigniss
23.10.2008 16:05:00
Steffen
Das Sub test2 funktioniert bei mir irgendwie nicht aber mit
If Not Intersect(target, Range(ActiveCell, ActiveCell)) Is Nothing Then
MsgBox Selection.Address
End If
habe ich jetzt zumindest einen Rückgabewert wenn die Zelle gelöscht wurde und damit werde ich mir ^^ hoffentlich bekomme ich das hin einfach per if else abfrage dann mein Offset setzen um das Datum zu hinterlegen. Das sollte solange funktionieren bis nicht noch irgendeine dumme Bedinung die ich jetzt nicht bedachte habe dazwischen funkt.
Danke für deine Hilfe
Steffen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige