PDA

Vollständige Version anzeigen : Code Anpassung ... ?


lekcin
28.04.2009, 15:44
Hallo Ihr Lieben ...

ich komme mal wieder nicht weiter ...

Ich möchte folgende Code anpassen:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' wird im definierten Bereich ein Wert geändert, wird in der nächsten Spalte das Datum eingetragen
Dim RaBereich As Range ' Variable für überwachten Bereich
Dim RaZelle As Range ' Variable für Zelle die zur Zeit bearbeitet wird
Set RaBereich = Range("H3:H103") ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address)) ' prüfen ob veränderte Zelle im überwachten Bereich
If RaBereich Is Nothing Then Exit Sub ' keine Zelle im überwachten Bereich
Application.EnableEvents = False ' Reaktion auf Eingabe abschalten
For Each RaZelle In RaBereich ' Schleife über alle veränderten Zellen im überwachten Bereich
RaZelle.Offset(0, 1) = Date
Next RaZelle
Application.EnableEvents = True ' Reaktion auf Eingabe eindschalten
Set RaBereich = Nothing ' Variable leeren
End Sub

Ich möchte ihn einfach nur so ändern, dass er auch für den Bereich L3:L103 funktioniert, d.h. bei Änderungen in diesem Bereich soll dann in der Nachbarzelle (Spalte M) das Datum eingetragen werden.

Ich habe hin und her probiert ... ich bekomme es nicht hin ... :(

Vielen Dank

Liebe Grüße

Paula :)

NoNet
28.04.2009, 16:01
Hallo Paula,

eigentlich musst Du nur den zu überwachenden Bereich anpassen.
Ich habe hier noch eine weitere kleine Codekorrektur vorghenommen, so dass dieser Code funktionieren sollte :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' wird im definierten Bereich ein Wert geändert, wird in der nächsten Spalte das Datum eingetragen
Dim RaBereich As Range ' Variable für überwachten Bereich
Dim RaZelle As Range ' Variable für Zelle die zur Zeit bearbeitet wird
Set RaBereich = Range("H3:H103, L3:L103") ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address)) ' prüfen ob veränderte Zelle im überwachten Bereich
If Not RaBereich Is Nothing Then ' wenn Zelle im überwachten Bereich liegt
Application.EnableEvents = False ' Ereignisüberwachung temporär abschalten
For Each RaZelle In RaBereich ' Schleife über alle veränderten Zellen im überwachten Bereich
RaZelle.Offset(0, 1) = Date
Next RaZelle
Application.EnableEvents = True ' Ereignisüberwachung wieder einschalten
End If
Set RaBereich = Nothing ' Variable leeren
End Sub

lekcin
28.04.2009, 16:08
Hallo Nonet,

leider funktioniert der Code überhaupt nicht mehr.

Weder wenn ich in Spalte L noch in Spalte H einen Wert ändere - es wird in der Nachbarspalte kein Datum eingetragen.

Hast Du eine Idee wieso?

Grüße, Paula :)

NoNet
28.04.2009, 16:19
Hallo Laura,

der Code funktioniert bei mir einwandfrei !
Ist etwa die Ereignissteuerung auf Deinem PC dekativiert ?
Drücke im VBA-Editor die Tasten Strg+G (=> Direktbereich), gib dort folgende Zeile ein, um die Ereignissteuerung wieder zu aktivieren : Application.EnableEvents = True

Um zu prüfen, ob der Code ausgeführt wird, kannst Du testweise als erste Zeile im Private SUB () den Befehl STOP eingeben, damit kannst Du jede Codezeile einzeln per F8-Taste abarbeiten, um zu sehen, ob der Code überhaupt durchlaufen wird.

lekcin
28.04.2009, 16:57
Hallo NoNet,

genau das war es ...

Vielen Dank!!!

Grüße, Paula