Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datum/Schaltjahr/Februar

Datum/Schaltjahr/Februar
21.05.2004 19:51:57
Matthias
Hi,
Ich habe folgendes Problem, in der beigefügtem code habe ich drei dropdown felder erstellt welche das Jahr, den Monat und die Tage des Monats in diesem Jahr wiedergibt, jedoch funktioniert das alles nicht wirklich, z.B. ist die auswahl des 29ten im Jahre 2005 im Februar möglich, was es eigentlich nicht dürfte, was kann ich da machen?
Danke für die antworten schon mal im vorraus...
"Diese Arbeitsmappe"
==================================================================
Private Sub Workbook_Open() Dim n As Integer Dim x As Integer Dim Letzter As Integer 'ComboBox 'cmbJahr' mit den Jahren füllen With Worksheets("Tabelle1").cmbJahr .Clear For n = 1990 To 2100 .AddItem n If n = Year(Date) Then x = n - 1990 + 1 Next n .ListIndex = x End With 'ComboBox 'cmbMonat' mit den Monatsnamen füllen With Worksheets("Tabelle1").cmbMonat .Clear For n = 1 To 12 .AddItem Format(DateSerial(2004, n, 1), "mmmm") If n = Month(Date) Then x = n - 1 Next n .ListIndex = x End With 'ComboBox 'cmbTag' mit den Tagen des Monats füllen 'Letzten Tag des aktuellen Monats bestimmen Letzter = DateSerial(Year(Date), Month(Date) + 1, 1) - _ DateSerial(Year(Date), Month(Date), 1) With Worksheets("Tabelle1").cmbTag .Clear For n = 1 To Letzter .AddItem n If n = Day(Date) Then x = n - 1 Next n .ListIndex = x End With "Tabelle1"

Private Sub cmbJahr_Change()
End Sub


Private Sub cmbMonat_Change()
Dim Monat       As Integer
Dim Tag         As Integer
Dim myJahr      As Integer
Tag = Worksheets("Tabelle1").cmbTag.ListIndex
Monat = Worksheets("Tabelle1").cmbMonat.ListIndex + 1
'ComboBox 'cmbTag' mit den Tagen des Monats füllen
'Letzten Tag des aktuellen Monats bestimmen
Letzter = DateSerial(myJahr, Monat + 1, 1) - _
DateSerial(myJahr, Monat, 1)
With Worksheets("Tabelle1").cmbTag
.Clear
For n = 1 To Letzter
.AddItem n
Next n
'wenn möglich, den eingestellten Tag belassen
On Error GoTo errHandle
.ListIndex = Tag
Exit Sub
errHandle:
.ListIndex = -1
End With
End Sub


Private Sub cmbTag_Change()
End Sub

================================================================================

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum/Schaltjahr/Februar
21.05.2004 21:02:22
Christoph
Hallo Matthias,
ohne ein Jahr zu kennen, kann "Date" auch kein Schaltjahr von einem regulären Jahr unterscheiden. So wie ich den Code verstehe, legst du beim Öffnen der Datei das Jahr 2004 fest, und das ist ein Schaltjahr.
In "cmb_Monat" ist "myJahr" gar nicht festgelegt. In dem Fall ist myJahr = 0. (entspricht 1900) und ist wieder ein Schaltjahr.
Also: myJahr noch festgelegen im Sinne von:
myJahr = Worksheets("Tabelle1").cmbJahr.Value
Ebenso sollte auch beim Wechsel des Jahres (also bei "cmbJahr_Change") die gleiche Prozedur aufgerufen werden, so dass du beim Wechsel der Jahreszahl die cmbTag-Einträge neu berechnest. Dadurch würde der Februar 2005 dann auch nur 28 Tage haben.
Gruß
Christoph
Anzeige
AW: Datum/Schaltjahr/Februar
21.05.2004 21:17:07
Josef
Hallo Matthias!
So sollte es gehn!

' **************************************************************
' Modul: DieseArbeitsmappe Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************

Option Explicit

Private Sub Workbook_Open()
Dim n As Integer
Dim x As Integer
Dim Letzter As Integer
Application.EnableEvents = False
'ComboBox 'cmbJahr' mit den Jahren füllen
With Worksheets("Tabelle1").cmbJahr
.Clear
For n = 1990 To 2100
.AddItem n
If n = Year(Date) Then x = n - 1990 + 1
Next n
.ListIndex = x
End With
'ComboBox 'cmbMonat' mit den Monatsnamen füllen
With Worksheets("Tabelle1").cmbMonat
.Clear
For n = 1 To 12
.AddItem Format(DateSerial(2004, n, 1), "mmmm")
If n = Month(Date) Then x = n - 1
Next n
.ListIndex = x
End With
'ComboBox 'cmbTag' mit den Tagen des Monats füllen
'Letzten Tag des aktuellen Monats bestimmen
Letzter = Day(DateSerial(Year(Date), Month(Date) + 1, -1)) + 1
With Worksheets("Tabelle1").cmbTag
.Clear
For n = 1 To Letzter
.AddItem n
If n = Day(Date) Then x = n - 1
Next n
.ListIndex = x
End With
Application.EnableEvents = True
End Sub

' **************************************************************
' Modul: Tabelle1 Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************

Option Explicit

Private Sub cmbJahr_Click()
Dim Monat As Integer
Dim Tag As Integer
Dim myJahr As Integer
Dim Letzter As Integer
Dim n As Integer
Application.EnableEvents = False
myJahr = Worksheets("Tabelle1").cmbJahr
Monat = Worksheets("Tabelle1").cmbMonat.ListIndex + 1
Tag = cmbTag.ListIndex
'ComboBox 'cmbTag' mit den Tagen des Monats füllen
'Letzten Tag des aktuellen Monats bestimmen
Letzter = Day(DateSerial(myJahr, Monat + 1, -1)) + 1
With Worksheets("Tabelle1").cmbTag
.Clear
For n = 1 To Letzter
.AddItem n
Next n
'wenn möglich, den eingestellten Tag belassen
On Error GoTo errHandle
.ListIndex = Tag
Exit Sub
errHandle:
.ListIndex = .ListCount - 1
End With
Application.EnableEvents = True
End Sub

Private Sub cmbMonat_Click()
Dim Monat As Integer
Dim Tag As Integer
Dim myJahr As Integer
Dim Letzter As Integer
Dim n As Integer
Application.EnableEvents = False
myJahr = Worksheets("Tabelle1").cmbJahr
Monat = Worksheets("Tabelle1").cmbMonat.ListIndex + 1
Tag = cmbTag.ListIndex
'ComboBox 'cmbTag' mit den Tagen des Monats füllen
'Letzten Tag des aktuellen Monats bestimmen
Letzter = Day(DateSerial(myJahr, Monat + 1, -1)) + 1
With Worksheets("Tabelle1").cmbTag
.Clear
For n = 1 To Letzter
.AddItem n
Next n
'wenn möglich, den eingestellten Tag belassen
On Error GoTo errHandle
.ListIndex = Tag
Exit Sub
errHandle:
.ListIndex = .ListCount - 1
End With
Application.EnableEvents = True
End Sub

Gruß Sepp
Anzeige
AW: Datum/Schaltjahr/Februar
Udo
"In "cmb_Monat" ist "myJahr" gar nicht festgelegt. In dem Fall ist myJahr = 0. (entspricht 1900) und ist wieder ein Schaltjahr."
1900 war kein Schaltjahr!
Udo
AW: Datum/Schaltjahr/Februar
21.05.2004 22:10:21
Christoph
Hi Udo,
mag ja sein, dass ich mich da geirrt habe.
war das jetzt "alle 400 Jahre kein Schaltjahr" oder "alle 100 Jahre kein Schaltjahr, aber alle 400 Jahre doch wieder" ?
wahrscheinlich letzteres, denn 2000 war ein Schaltjahr, soweit ich mich erinnere.
Ich hab auch nur versucht, den Code nachzuvollziehen, ohne mich genau auf diese Schaltjahr-Geschichte einlassen zu wollen.
Danke für den Hinweis
Gruß
Christoph
Anzeige
AW: Datum/Schaltjahr/Februar
Udo
Volle 100 Jahre sind dann ein Schaltjahr, wenn sie duch 400 teilbar sind,
natürlich ohne Rest.
Udo
AW: Datum/Schaltjahr/Februar
22.05.2004 17:53:58
Matthias
danke euch, es funkioniert !

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige