Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB5, VB6 | 02.02.05 |
Datumsauswahl vor 1601 - ohne DTPicker-Control Leider erlaubt das DTPicker-Control Datumseingaben bis frühestens 1601. Unter Berücksichtigung der Kalenderreform von 1582 lässt sich das Problem wie folgt lösen. | ||
Autor: Thomas | Bewertung: | Views: 12.934 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das DTPicker-Control erlaubt leider nur die Datumseinstellung bis frühestens 1601. Es sollen aber auch vorher schon Leute gelebt haben!
Ich habe mir da selbst beholfen und dabei auf die Kalenderreform von 1582 geachtet. Hier mein Vorschlag:
Benötigt wird eine Form mit folgenden Controls:
- 2 x ComboBox (Combo1 und Combo2)
- 1 x TextBox (Text1)
- 1 x CommandButton (Command1)
Jetzt bitte noch nachfolgenden Code in den Codeteil der Form einfügen:
Private Sub Form_Load() Dim i As Long ' Tage With Combo1 For i = 1 To 31 .AddItem Format$(i, "00") Next i End With ' Monate With Combo2 For i = 1 To 12 .AddItem Format$(i, "00") Next i End With ' Voreinstellung für Datum Text1.Text = 1582 Combo1.Text = "05" Combo2.Text = 10 End Sub
Private Sub Command1_Click() Dim Datum As String Dim Datum1 As String Dim Datum2 As String Dim i As Long Datum2 = "04.10.1582" If Combo1.Text <> "" And Combo2.Text <> "" And Text1.Text <> "" Then Datum = Combo1.Text & "." & Combo2.Text & "." & Text1.Text For i = 1 To 10 Datum1 = DateAdd("d", i, Datum2) If Datum = Datum1 Then MsgBox "Nach Einführung des gregorianischen Kalenders im Jahre 1582 durch Papst Gregor" & _ "XIII folgte auf den 04.10.1582 der 15.10.1582. Diese Maßnahme war notwendig geworden, " & _ "um die bis dahin aufgelaufene Differenz von 10 Tagen (des julianischen Kalenders von" & _ "46 v. Chr.) wieder auszugleichen. Das Datum wird auf den 04.10.1582 " & _ "zurückgesetzt.", vbExclamation, "Die Kalenderreform von 1582" Combo1.Text = "04" End If Next i End If End Sub