Datum in Zelle darf nicht Zukünftiges Datum enthalten und muss im Aktuellen Jahr sein?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Für deine Problemstellung ideal ist die Datenüberprüfung.

  1. Markiere A1:A30
  2. Daten → Datentools → Datenüberprüfung → Datenüberprüfung...
  3. Einstellungen → Zulassen: Datum, Daten: zwischen, Anfangsdatum: =DATUM(JAHR(HEUTEU());1;1), Enddatum: =HEUTE()
  4. Fehlermeldung: "Das Datum liegt nicht zwischen dem 01.01. diesen Jahres und heute."
augsburgchris  31.08.2016, 12:39

Das war auch mein Gedanke aber der Code hat mich irritiert.

0
Suboptimierer  31.08.2016, 12:40
@augsburgchris

Vielleicht dachte der Fragesteller, dass dies nur mit VBA ginge.
Man kann niemandem vorwerfen, dass er eine Funktionalität nicht kennt.

0
augsburgchris  31.08.2016, 12:41

Das stimmt, dennoch hat es mich verwirrt. Der Fehlertext ist bei der Gültigkeit ja auch flexibel gestaltbar.

0
N3rox123 
Fragesteller
 31.08.2016, 12:44

Hallo Suboptimierer,

vielen Dank für deine Antwort ich denke das dürfte funktionieren leider habe ich noch ein Problem. Nach eingabe der Werte bekomme ich einen Fehler der Angegebene benannte Bereich wurde nicht gefunden?

1
N3rox123 
Fragesteller
 31.08.2016, 13:14
@N3rox123

Hab den Fehler gefunden Vielen Dank!!!! :D

1
Ninombre  31.08.2016, 13:16
@N3rox123

Das U ist zuviel, das einfach löschen

=DATUM(JAHR(HEUTEU());1;1)

2

also ich hab mal Dein µ analysiert:

'1.agiert nur, wenn Cursor in A3:A30. Wird durch letztes=einziges Endif abgeschlossen
'2. neues if -(warum kein fehlendes Endif gemeldet?)
'2a. wenn Zelle (in A3:A30!) =leer: =HEUTE() ' soweit so gut
'2b. else: prüfe ob Cursor in D3:D30 ? kann er gar nicht sein, da es nur in A3:A30 weiterging! deshalb: Verlasse Sub (ist einzeilige Variante ohne endif)
'2c. Target.value ist zu diesem Zeitpunkt keinesfalls mehr leer, da oben Heute() gesetzt

Ob ich die Muße finde, das für dich zu schreiben, weiß ich im Moment nicht

Iamiam  31.08.2016, 13:05

...hat sich durch Soboptimierers AW wohl erledigt.

0
Suboptimierer  31.08.2016, 18:09

2. Bei Einzeilern ist ein End If nicht notwendig.

Hier etwas hübscher:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A3:A30")) Is Nothing Then
    If Target.Value = "" Then Target.FormulaLocal = "=HEUTE()"
  Else
    If Intersect(Target, Range("D3:D30")) Is Nothing Then Exit Sub
    If Target.Value = "" Then Target.Value = 1 
  End If 
End Sub

2b. Doch Cursor könnte in D3:D30 sein, aber Zelle, außer die in A3:A30 oder D3:D30 auf 1 zu setzen, wenn sie leer sind, erscheint auch mir unlogisch.

1
Iamiam  31.08.2016, 21:42
@Suboptimierer

Doch Cursor könnte in D3:D30 sein

Du meist, wenn ein Bereich über 4 oder mehr Spalten markiert wird?

ok. aber dann macht Target.value überhaupt keinen Sinn und diese Zeile hätte mit Not intersect(... als Sicherung dagegen schon einleitend kommen müssen. ich hab mich übrigens gegen versehentliche Mehrzellen-Auswahl immer so abgesichert:

if selection.cells().count >1 then MSG-Box("Mehrere Zellen !"): end sub geht auch mit .rows().count oder columns.count

Oder wie meinst Du das sonst?

Überseh ich da was oder weiß ich was dsbzgl. nicht?

0
Suboptimierer  01.09.2016, 10:40
@Suboptimierer

*"Target nicht in D3:D30". Hier müsste entweder das "nicht" gestrichen werden oder ja-nein vertauscht werden.

1
Iamiam  01.09.2016, 11:31
@Suboptimierer

Hast nochmal recht. Eimal Not, einmal kein Not schafft Verwirrung.

aus welchem Programm hast Du den Ablauf-Planer? Gibts sowas kostenlos? Hab das bisher immer in xl mühsam als Objekte eingefügt, aber auch seltenst genutzt..

0
Suboptimierer  01.09.2016, 16:42
@Iamiam

Bezüglich D3:D30: Ich dachte, ich hätte den Kommentar wieder entfernt? Am Ende hielt ich den Kommentar wieder für falsch, also das Diagramm für richtig. Ich wage nicht eine erneute Korrektur. Soll jeder selber schauen. ^^

Tool für den PAP: http://live.yworks.com/graphity/ → Flowchart

1

Was soll genau in A1:A30 stehen? Ein beliebiges Datum? Oder stehen dort bereits Daten und du willst eine Messagebox a la "die Daten in A3, A15 und A23 entsprechen nicht den Kriterien?"

Muss es VBA sein? Warum reicht dir Gültigkeit nicht?

N3rox123 
Fragesteller
 31.08.2016, 12:48

Hallo Augusburgchris,

VBA brauche ich nicht zwingend insofern es auch über die Gültigkeit geht nehme ich auch diese gerne. Folgenden Hintergrund haben die Zellen.

Die Zellen sollen immer auf dem Aktuellen Datum sein jedoch Editierbar bleiben. Beim löschen mit entf. oder leer sein der Zelle springt die Zelle automatisch wieder auf die =HEUTE Funktion. Nun möchte ich noch dazu zu diesen Funktionen einfach das wenn die Zelle editiert wird nur Daten des Aktuellen Jahres benutzt werden können und es kein Datum in der Zukunft sein darf (mit entsprechender selbstgestaltetetn Fehlermeldung. Anmerken möchte ich noch das dieses Dokument auch noch jahre später benutzt werden soll sprich das das Datum sich natürlich auch auf 2017 anpasst wenn 2017 ist und nicht nur bei 2016 dann hängen bleibt

0

Warum nicht mit "Wenn "Datum" größer als Datum() dann ..."

als Wenn-Funktion. F20 ist hier das abgefragte Datum:

=WENN(F20>HEUTE();"Ist in der Zukunft"; "ist nicht in der Zukunft")

Müsste evtl. auch mit bedingter Formatierung gehen - zumindest farblich markieren.

augsburgchris  31.08.2016, 12:39

Und wo fragst du da das Jahr ab?

0