schauan (Andre Schau)
03.Juni 2012

Datepicker - Ersatz

lauffähig in Excel 2000 - 2003 und ab 2007

AS_DatePicker.xlsm (ab 2007) AS_DatePicker.xls (bis 2003)

Aus den verschiedenen Excel-Versionen sind unterschiedliche Dialoge zur Datumsauswahl bekannt:
Microsoft Date and Time Picker Control
Calendar Control
Microsoft Month View Control
Microsoft Outlook Date Control
...

Diese Steuerelemente gibt es in verschiedenen Versionen, manche sind nur auf Userforms verfügbar, usw. Je nach Office-Version bzw -umfang kann es auch noch passieren, dass die Steuerelemente fehlen. Unter der 64-bit Version von Office sind ebenfalls Probleme bekannt...
Muss man mit einer Anwendung für verschiedene aktuelle und ältere Versionen entwickeln und hat man eventuell auch schon die nächste Office-Version im Blick, empfiehlt es sich daher, eine eigene Datumsauswahl zu programmieren.

Im Internet findet man eine Reihe Informationen zum Thema und auch freie und kostenpflichtige "Datepicker". Ich habe hier einige Informationen zusammengestellt:
Date Picker Informationen

Die Codes sind meist geschützt oder recht komplex, sodass ich hier eine einfache Variante entwickelt habe.

AS_DatePicker

Anwendung

Auf dem Tabellenblatt sind zwei Buttons positioniert.

Buttons im Tabellenblatt

Gestartet wird mit dem Button "Start Date Picker". Es erscheint der Dialog zur Datumsauswahl.

AS_Datepicker

Der Kalender beginnt mit dem Monat und Jahr des aktuellen Datums. Über die Comboboxen kann man Monat und Jahr auswählen, bei jeder Auswahl aktualisieren sich links die Angaben der Kalenderwochen und natürlich die Tagesbuttons. Je nach Monat werden 4 - 6 Zeilen für die Wochen angezeigt. Das userform passt sich in der Größe entsprechend den Wochen an. Die Buttons sind Togglebuttons, bleiben also nach der Betätigung versenkt. Bei Drücken eines anderen Buttons kommt der versenkte wieder hoch.

AS_Datepicker gedrückt

Nachteil bei den Togglebuttons ist, das die Farbe im ungedrücktenZustand programmierbar ist, im gedrückten Zustand jedoch nicht.
Wer das braucht, müsste statt der Togglebuttons Commandbuttons nehmen.
Im ungedrückten Zustand könnte man z.B. den aktuellen Tag farblich hervorheben.

Bei Betätigung eines Buttons wird das Datum in die aktive Zelle geschrieben. Ist die Zelle bereits belegt, erscheint eine Warnmeldung, bei der man das Überschreiben bestätigen muss.

Warnung

Man kann natürlich auch was anderes tun als das Datum in Zellen eintragen - siehe code im Klassenmodul der Buttons. Der gewählte Tag steht in der globalen Variable strDate. Die Übergabe an die Variable steht mit im Klassenmodul der Buttons.
Eine Anwendung wäre z.B. die Eingabe verschiedener Daten in mehrere Zellen. Man setzt die Eigenschaft ShowModal des DatePickers auf False und kann dann ein Datum auswählen und eintragen, und dann in der nächsten Zelle wieder, usw. Ansonsten müsste man den Dialog mehrfach starten.
Dass der DatePicker nach Auswahl eines Tages geschlossen wird, muss im Klassenmodul der Buttons eingebaut werden, dort, wo "Ihr Code" stehen könnte.

Weitere Hinweise

Nach einer Forumsanfrage habe ich ein zweites Beispiel eingebaut.

Frage:

Wenn ich nun diesen DatePicker aus der Textbox einer Userform aufrufen will, wie mache ich das?
Klicke in die Textbox und dann soll der DatePicker starten und das ausgewählte Datum in die Textbox eingetragen und dann der DatePicker geschlossen werden.
Den Aufruf vom Datepicker baust Du z.B. in das MouseDown - Ereignis der Textbox.

Userform mit Textbox

Da das angeklickte Datum in einer Public-Variable liegt, kannst Du es einfach übertragen:

Private Sub TextBox1_MouseDown(ByVal Button As Integer, _
                               ByVal Shift As Integer, _
                               ByVal X As Single, _
                               ByVal Y As Single)
  frm_DatePicker.Show
  TextBox1.Text = strDate
End Sub

Userform mit Textbox

Eine weitere Anfrage betraf ein Problem mit ActiveX - Steuerelementen. Zuweilen wird ja diskutiert, wozu die Formular-Elemente noch gut sind. Hier ist das der Fall. Die Anwendung ist unter 2010 programmiert und lief unter 2003 nicht.

Frage:

In Excel 2003 funktioniert der eingebaute "Show DatePicker" - Button nicht. Ich kann ihn nicht drücken. Komisch.
Antwort:
Das ist wohl ein Problem vom Kompatibilitätsmodus. Ich bekomme diese Meldung:

---------------------------
Microsoft Office Excel
---------------------------
Diese Datei wurde in einer neueren Version von Microsoft Excel erstellt. Die Datei wurde in ein Format konvertiert, mit dem Sie arbeiten können, aber es wurden die folgenden Probleme festgestellt. Die Datei wurde im Schreibschutzmodus geöffnet, um die Originaldatei zu schützen.
- Nicht initialisierte ActiveX-Steuerelemente können nicht in dieser Version von Excel geöffnet werden.
---------------------------
OK
---------------------------
Der Button war ActiveX, das Verhalten passt also zu der Meldung. Ein Formular-Button hätte wohl funktioniert. Ich habe die Anwendung entsprechend geändert.