287 Aufrufe
Gefragt in Tabellenkalkulation von

Hi Leute

Ich brauche wiedermal eure Hilfe für ein kleines Projekt.

Ich programmiere gerade einen Mini Kalender für Excel, da der integrierte Date And Time Picker nicht funktioniert. (Version: Excel  2003 Student Edition). Das Aufrufen des Kalenders, sowie die Datumswahl funktionieren schon mal korrekt. Auch das Einfügen eines Datums in eine Zelle im Tabellenblatt. Die Datumsangaben habe ich mit der DateSerial Funktion in die jeweiligen CommandButtons in meiner Userform (es sind ca. 35) geladen. Nun möchte ich den Buttontext mit den Datumsangaben mit dem aktuellen Datum vergleichen. Dazu habe ich folgenden Code  in den SpinButton, der mir die Monate durchschaltet, geschrieben:

Private Sub SpinButton1_Change()

'Monate anzeigen!

TextBox1.Value = SpinButton1.Value

'Kalendertage eintragen!

Dim Jahre As Date

Dim Monate As Date

Dim Tage As Date

Jahre = UserForm1.ComboBox1

Monate = UserForm1.TextBox1.Value

Tage = 1

If Monate = 1 Then

UserForm1.CommandButton1.Caption = CDate(DateSerial(Jahre, Monate, Tage) – 4)

UserForm1.CommandButton2.Caption = CDate(DateSerial(Jahre, Monate, Tage) - 4 + 1)

UserForm1.CommandButton3.Caption = CDate(DateSerial(Jahre, Monate, Tage) - 4 + 2)

UserForm1.CommandButton4.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 3)

UserForm1.CommandButton5.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 4)

UserForm1.CommandButton6.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 5)

UserForm1.CommandButton7.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 6)

UserForm1.CommandButton9.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 7)

UserForm1.CommandButton10.Caption = CDate( DateSerial(Jahre, Monate, Tage) - 4 + 8)

UserForm1.CommandButton11.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 9)

UserForm1.CommandButton12.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 10)

UserForm1.CommandButton13.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 11)

UserForm1.CommandButton14.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 12)

UserForm1.CommandButton8.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 13)

UserForm1.CommandButton16.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 14)

UserForm1.CommandButton17.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 15)

UserForm1.CommandButton18.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 16)

UserForm1.CommandButton19.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 17)

UserForm1.CommandButton20.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 18)

UserForm1.CommandButton21.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 19)

UserForm1.CommandButton15.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 20)

UserForm1.CommandButton23.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 21)

UserForm1.CommandButton24.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 22)

UserForm1.CommandButton25.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 23)

UserForm1.CommandButton26.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 24)

UserForm1.CommandButton27.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 25)

UserForm1.CommandButton28.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 26)

UserForm1.CommandButton22.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 27)

UserForm1.CommandButton30.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 28)

UserForm1.CommandButton31.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 29)

UserForm1.CommandButton32.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 30)

UserForm1.CommandButton33.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 31)

UserForm1.CommandButton34.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 32)

UserForm1.CommandButton35.Caption = CDate (DateSerial(Jahre, Monate, Tage) - 4 + 33)

UserForm1.CommandButton29.Caption = CDate( DateSerial(Jahre, Monate, Tage) - 4 + 34

End If

'Kalendertage auf aktuelles Datum prüfen!

Dim i As Integer

For i = 1 To 35

If UserForm1.Controls("CommandButton" & i).Caption = Date Then

   UserForm1.Controls("CommandButton" & i).ForeColor = &HFF&

End If

Next i

Der Code „Kalendertage auf aktuelles Datum prüfen“ funktioniert irgendwie nicht. Eine Fehlermeldung kommt nicht. Es passiert nichts.

Wenn ich den Code:

Private Sub CommandButton1_Change()

 If Monate =9 And CommandButton1.Caption=Date Then

    CommandButton1.ForeColor=&HFF&

End If

End Sub

Direkt in den CommandButton schreibe und auf den Button klicke funktionirt es und die Farbe ändert sich. Es scheint also an der Schleife, wie die CommandButtons angesprochen werden zu liegen.

Wie kann ich von allen  CommandButon in der Userform den Captiontext mit dem aktuellen Datum vergleichen? Hoffe, dass Mir auch diesmal geholfen werden kann.

1 Antwort

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
 
Beste Antwort

Hallo Mathias,

die Schleife funktioniert schon, nur der Vergleich klappt nicht. Probiere es so:

For i = 1 To 35
  If CDate(UserForm1.Controls("CommandButton" & i).Caption) = Date Then UserForm1.Controls("CommandButton" & i).ForeColor = &HFF&
Next i

Gruß

M.O.

...