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

Heutiges Datum eintragen und nicht aktualisieren

Heutiges Datum eintragen und nicht aktualisieren
27.10.2015 14:23:27
Florian
Hallo zusammen,
ich habe ein Problem bei der Befüllung einer Zeile.
In meiner Tabelle trage ich in der Spalte C einen Wert ein worauf hin die restlichen Spalten der Zeile automatisch mit Werten befüllt werden. Ein Wert dieser Zeile soll auch das heutige Datum sein. Die Funktion Heute() hilft mir allerdings nicht weiter, da das Datum fixiert werden soll. Wenn in der Spalte C kein Wert eingetragen ist soll auch die Datumsspalte leer sein.
Ich habe is bisher mit dem untenstehen Code versucht aber iwie funktioniert das nicht. Bzw wann wird ein _Private Sub überhaupt ausgeführt?
Kann mir hier vielleicht jemand weiter helfen?
Vielen Dank im Voraus
gruß Florian

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then
If Val(Target)  "" Then
If Target.Offset(0, 11) = "" Then   Target.Offset(0, 11) = Date
End If
End If
End If
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Heutiges Datum eintragen und nicht aktualisieren
27.10.2015 15:43:35
matthias
Hallo Florian,
Private Subs verhalten sich genauso wie ein entsprechendes Sub, sie werden dir unter Entwicklertool, Makros nur nicht angezeigt, sie sind also privat und damit versteckt und haben mit deinem Problem nichts zu tun.
Die Frage sollte lieber lauten: "Wann wird ein Worksheet_Change-Ereignis ausgeführt?" Dieses Ereignis gehört nicht in ein Modul sondern in den Code-Bereich des Tabellenblatts in dem es aktiv sein soll (heist nicht umsonst Worksheet_Change) und wird bei JEDER Wert-Änderung einer Zelle ausgeführt.
Du hast zwei Fehler in deinem Code:
1. Val(Target) ergibt immer eine Zahl, diese kann wiederum nicht leerer Text sondern nur Null sein.
2. If Target.Offset(0, 11) = "" Then Target.Offset(0, 11) = Date
Steht ein Befehl direkt auf der Zeile der Wenn-Bedingung nach dem Then, so wird von einer _ Kurzform ausgegangen. Dh. zu diesem If gehört nur was auf der Zeile nach dem Then steht und es wird kein "End If" benötigt (typischer Einzeiler).

Langform:
If Target.Offset(0,11) ="" Then
Target.Offset(0, 11) = Date
End If
Kurzform:
If Target.Offset(0, 11) = "" Then Target.Offset(0, 11) = Date
Allerdings kann man dem If dann auch nur einen Befehl zuordnen. Willst du eine Reihe von Befehlen nach dem If ausführen, so muss die Langform verwendet werden.
lg Matthias

Anzeige
AW: Heutiges Datum eintragen und nicht aktualisieren
27.10.2015 16:20:49
matthias
Ach, übrigens kann ein Target mehr als nur eine Zelle sein, z.B. wenn du einen ganzen Bereich markierst und diesen löschst. Da kommt natürlich ein Fehler.
Das komplette Ereignis sollte eher so lauten:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rZelle As Range
'Wenn Schnittmenge aus Target und Spalte C nicht leer ist
If Not Intersect(Target, Columns(3)) Is Nothing Then
'Für jede Zelle in der Schnittmenge
For Each rZelle In Intersect(Target, Columns(3))
If Val(rZelle)  0 Then 'Wenn Wert Zelle nicht leer ist
If rZelle.Offset(0, 11) = "" Then rZelle.Offset(0, 11) = Date
End If
Next rZelle
End If
End Sub

Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige