Worksheet_SelectionChange(ByVal Target As Range)

Bild

Betrifft: Worksheet_SelectionChange(ByVal Target As Range) von: Olaf
Geschrieben am: 16.02.2005 10:33:04

Hallo,

ich benötige nach einer Änderung einer Zelle die Zeile, die geändert wurde.

Target.Row gibt mir ja nur die Zeile zurück, die nach der Änderung selektiert ist.

Hintergrund: Wenn in Spalte A egal in welcher Zeile ein Datum eingetragen wird, soll ein Eintrag rechts daneben erscheinen. Mit Formel geht das nicht, da auch manchmal Zeilen eingefügt werden.
Target.Row-1 geht auch nicht, da ja nicht jeder nach einer Änderung Enter drückt.

Gibt es eigentlich eine Möglichkeit, eine Sub zu starten, wenn nur in einer bestimmten Spalte eine Änderung erfolgt?

Vielen Dank schonmal!
Olaf

Bild


Betrifft: AW: Worksheet_SelectionChange(ByVal Target As Range) von: Galenzo
Geschrieben am: 16.02.2005 10:44:42

machst du z.B. so:


Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 1 And IsDate(Target) Then Target(1, 2) = "ein Eintrag"
End Sub


Hintergrund: Worksheet_Change wir bei Änderungen im Blatt ausgelöst und abgearbeitet.
Da nur auf Änderungen/Eintragungen in Spalte A reagiert werden soll, ist eine entsprechende Abfrage eingebaut: (If Target.Column = 1 ?) Diese ist auch gleich mal zusammengefaßt mit der 2. Bedingung, nämlich ob der Eintrag ein Datum ist. Dann wird rechts daneben was eingetragen - kannst du entsprechend anpassen.


Bild


Betrifft: AW: Worksheet_SelectionChange(ByVal Target As Range) von: Olaf
Geschrieben am: 16.02.2005 11:08:19

Danke, das ist aber erst die eine Hälfte.
Target ist ja immer die neue Zelle!!
Wenn ich also in A1 was ändere, ist nach dem Enter Target = A2!
Ich möchte aber Target = A1 haben und zwar auch wenn kein Enter erfolt, sonder Tab oder mit der Maus irgendwohin gesprungen wird. Also immer die zuletzt geänderte Zelle soll der Target sein.

Ansonsten funzt es ja.

Gruss
Olaf


Bild


Betrifft: AW: Worksheet_SelectionChange(ByVal Target As Range) von: Galenzo
Geschrieben am: 16.02.2005 11:45:23

hää?
Target ist DIE Zelle (Bereich), der sich ändert. Nix neue Zelle.
Der Cursor steht nur in der nächsten Zelle, weil die manuelle Eingabe mit ENTER beendet wurde unt unter Extras/Optionen/Bearbeiten/nach unten ausgewählt ist.

Willst du nach der Eintragung wieder diese Zelle (also in der gerade was eingetragen wurde) auswählen?
Ddann schreibe das als letzte Anweisung in die Prozedur mit rein: Target.Select

ich hoffe das tut's - ansonsten müßtest du nochmal präziser beschreiben, WAS passieren soll, was selektiert werden soll usw.


Bild


Betrifft: AW: Ne, geht doch nicht!? von: Olaf
Geschrieben am: 16.02.2005 15:37:53

Hi,

geht aber leider nicht so.
Wenn ich in A1 ein Datum eingebe und Enter drücke, passiert erstmal garnichts.
Erst wenn ich wieder auf A1 gehe, arbeitet Excel die Sub ab.
Ich möchte aber beim Verlassen der geänderten Zelle die Einträge reinhaben.

Gruss
Olaf


Bild


Betrifft: AW: Geht doch!! von: Galenzo
Geschrieben am: 16.02.2005 16:17:34

mußtu richtiges Ereignis nehmen!
Private Sub Worksheet_Change(ByVal Target As Range)

NICHT SelectionChange!!!!!


Bild


Betrifft: Oh Shit! ;-))) von: Olaf
Geschrieben am: 16.02.2005 16:45:46

Hi,

danke!!!
Genau das war der Fehler.

Gruss
Olaf


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Formatabfrage mittels Wenn-Dann"