6.1k Aufrufe
Gefragt in Tabellenkalkulation von netmx Mitglied (115 Punkte)
Hallo Leute,

habe eine Frage. In eine Zelle (A1) soll das Jahr eingeben werden, das muss ich danach automatisch in andere Datumszellen übernehmen (dort steht dann 01.01.A1, 31.01.A1, ...).
Wie kann ich das bewerkstelligen?

LG Ricardo

35 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("I3:J14")) Is Nothing Then
Target.Value = CDate(Left(Target, 2) & "." & Mid(Target, 4, 2) & "." & Range("A1").Value)
End If
Application.EnableEvents = True
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Vielen Dank, Rainer!

Habe das Makro eingefügt, die Arbeitsmappe gespeichert. Leider passiert nichts! Was habe ich falsch gemacht?

LG Ricardo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

das Makro funktioniert, es gehört in den Codebereich des Arbeitsblattes, in dem es wirken soll.

Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Rainer, Rainer, DAS IST WAHNSINN!

Vielen, vielen Dank! Echt genial!

Wenn ich A1 ändere soll der Bereich auch geändert sein. Ist das möglich?

LG Ricardo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

Wenn ich A1 ändere soll der Bereich auch geändert sein.


.....das verstehe ich jetzt nicht, in A1 steht doch die Jahreszahl, die zur Vervollständigung des Datums gebraucht wird und hat nichts mit dem Bereich zu tun.

Was willst Du nun ändern???

Und falls Du noch ein Anliegen in diesem Zusammenhang hast, bitte nenne es gleich.

Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Wenn 2008 in A1 steht, dann kann ich die in den Bereich I3:J14 im Formar TT.MM. eintragen.

Wenn ich das gemacht habe und ich dann in A1 2007 eintrage, bleibt der Wert im Bereich I3:J14 im Format TT.MM.2008.

Kannst du mir sagen welchen Code ich brauche dass es den Bereich I3:J14 dann automatisch updatet?

LG Ricardo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

ja, das geht, aber leider antwortest Du immer nur in Fragmenten.

Welcher Bereich soll bei 2007 angesteuert werden?
Willst Du dann noch mehr Jahreszahlen und Bereiche einbeziehen?
Wenn ja, welche?

Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Welcher Bereich soll bei 2007 angesteuert werden?
> Nur die Jahreszahl, d.h. aus 2007 soll 2008 werden (im gesamten Bereich I3:J14)

Willst Du dann noch mehr Jahreszahlen und Bereiche einbeziehen?
> Nein

Bsp:
A1=2007
I3=01.0.1
Skript ändert I3 zu 01.01.2007
Ich ändere A1 zu 2008
I3 bleibt 01.01.2007

Ich hätte gerne, dass I3 automatisch 01.01.2008 wird und nicht dass ich auf die Zelle doppelklicken muss!

Vielen Dank im Voraus. Wenn du noch fragen hast: bitte nicht zögern!

LG Ricardo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

da muss ich meine Aussage aus AW17 zurückziehen.

Die Jahreszahl in A1 muss immer vor der Eingabe in den Zellen des Bereiches I3:J14 eingetragen sein.

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

wenn Du es so meinst, dass Du einerseits im Bereich I3:J14 Werte im Format "TT.MM." eingeben kannst, die dann in ein vollständiges Datum, entsprechend der Jahreszahl in A1, gewandelt werden
und andereseits bei Änderung der Jahreszahl in A1 alle bereits vorhandenen Daten in I3:J14 entsprechend dieser geändert werden sollen, dann funktioniert das mit diesem Code.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngC As Range, rngBer As Range
Application.EnableEvents = False
Set rngBer = Range("I3:J14")
If Not Intersect(Target, rngBer) Is Nothing Then
Target.Value = CDate(Left(Target, 2) & "." & Mid(Target, 4, 2) & "." & Range("A1").Value)
ElseIf Not Intersect(Target, Range("A1")) Is Nothing Then
For Each rngC In rngBer
If rngC.Value <> "" Then
rngC.Value = CDate(Day(CDate(rngC)) & "." & Month(CDate(rngC)) & "." & Range("A1").Value)
End If
Next
End If
Application.EnableEvents = True
End Sub


Gruß
Rainer
...