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 netmx Mitglied (115 Punkte)
Hallo Rainer,

du hast mir sehr geholfen!
Tausend Dank!

LG Ricardo
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Eine Frage habe ich jedoch noch:

Wenn der Benutzer in A1 versehentlich einen Buchstaben miteingibt, meldet Excel einen Fehler und bricht das Makro ab, Excel muss dann neu gestartet werden damit es wieder klappt.
Kann ich das irgendwie abgfangen, damit so etwas nicht passiert?

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

hier die Änderung

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 IsNumeric(Target.Value) Then
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
Else
MsgBox "Falscheingabe"
Application.EnableEvents = True
Exit Sub
End If
Application.EnableEvents = True
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Hallo Rainer,

das ist echt cool :)
Ein Manko: wenn ich nun Daten im Bereich I3:J14 ändere, kommt die Fehlermeldung "Falscheingabe" auch. Sie soll allerdings nur bei Falscheingabe im Feld A1 erscheinen.

LG Ricardo
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Hallo,

bislang konnte mir niemand eine Antwort geben. Kann man den Code dahingehend abändern dass nur bei einer Falscheingabe in A1 die Fehlermeldung kommt und nicht im ganzen Dokument?

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

manchmal hat man eben keine Lust mehr auf eine Antwort, auch wenn es über den Pager versucht wird.

Hättest Du von Anfang an, unmissverständlich geschildert, was Du vor hast und nicht scheibchenweise immer einen Wunsch mehr hinzugefügt, könnten wir schon lange am Ziel sein.

Ich war der Meinung, dass Du im Bereich nichts zu ändern hast und wenn doch, ist es doch nicht zu viel Arbeit eine Msg-Box mal weg zu klicken.

Wie dem auch sei, versuch's mal so:

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 IsNumeric(Target.Value) Then
If Target.Count = 1 Then
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
Else
MsgBox "Falscheingabe"
Application.EnableEvents = True
Exit Sub
End If
End If
Application.EnableEvents = True
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Hallo Rainer,

tut mir leid dass ich etwas nervig war und die Fragestellung nicht klar war. Ich wusste am Anfang noch nicht, wie ich diese Tabelle gestalten soll, deswegen sind diese Fragen auch erst nach und nach aufgetaucht.
Ich möchte mich rechtherzlich bei dir für die kompetente Hilfe bedanken, du hast mir wirklich sehr geholfen. Menschen wie du sind die Grundlage für ein Forum wie dieses. Nochmals vielen Dank für deine Hilfsbereitschaft!

Dein VBA-Script ist fast perfekt, was mir noch fehlt ist folgendes: Die Fehlermeldung erscheint leider nicht mehr. Wenn ich ein Datum vom 30. auf den 31. abändere (wenn es in diesem Monat keinen 31. gibt - kann dem Benutzer ja mal passieren) bricht das Script mit "Laufzeitfehler 13" ab. Mein Wunsch ist, dass es eine Fehlermeldung, z..B. "Datum Fehlerhaft" ausgibt und das Script nicht gestoppt wird.

Würde mich sehr über eine Antwort von dir freuen!

Liebe Grüße,
Ricardo
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Ricardo,

für Deine erneute Anfrage bin ich nicht mehr der richtige Ansprechpartner, da ich VBA eigentlich nur für den Hausgebrauch beherrsche.
Leider lasse ich mich hin und wieder dazu hinreißen auch mal eine VBA-Frage zu beantworten, so auch in Deinem Falle.

Hätte ich allerdings von Anfang an gewusst, wie sich Dein Problem entwickelt, hätte ich das Makro gleich anders aufgebaut oder gar die Finger davon gelassen.
Deshalb auch die Kritik an Deiner Fragestellung.

Meine generelle Meinung zu Deinem Problem ist, dass ich ganz auf VBA verzichten und die Daten als vollständiges Datum eingeben würde, wie es sich eigentlich auch gehört.
Du ersparst Dir damit unnötigen Ärger, wenn das Makro mal aussteigt und Du selbst nicht in der Lage bist, die Sache wieder zu richten.

Aber vielleicht sieht es jemand anders als ich und hilft Dir weiter.

Gruß
Rainer
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Hallo Rainer,

danke für deine Antwort. Ich versuche es nun anders zu lösen.

Gruß Ricardo
0 Punkte
Beantwortet von netmx Mitglied (115 Punkte)
Hallo Rainer,

darf ich den von dir geschriebenen Code ggf. in einem anderen Forum veröffentlichen?

LG Ricardo
...