DatePicker - Maximal auswählbares Datum = Heutiger Tag
#1
Question 
Hallo allerseits,

ich bin auf ein Excel-Problem gestoßen, dem ich leider nicht gewachsen bin. Es geht um Folgendes:

Ich habe einen Zähler erstellt, der die Dauer der Betriebszugehörigkeit eines Mitarbeiters angibt. Über Option Buttons kann der Wert entweder in Tagen, Monaten oder Jahren angezeigt werden. Um das Startdatum der Betriebszugehörigkeit anzugeben, habe ich ein Active-X Steuerelement eingefügt, den "Microsoft Date and Time Picker Control 6.0 (SP6)".

Mein Ziel ist, dass im DTPicker nur ein Datum ausgewählt werden kann, das in der Vergangenheit bzw. am heutigen Tag liegt.

In den Eigenschaften des DTPickers kann ein MaxDate und ein MinDate eingegeben werden. Ich kann im MaxDate-Feld allerdings nicht "=HEUTE()" bzw. "=TODAY()" eintragen, sondern nur Datumswerte. Ich kann das Feld auch nicht mit einer Zelle verknüpfen, die das heutige Datum enthält. Ich kann das Eigenschaftsfeld auch nicht leer lassen. Ich kann die eintragbaren Daten für die Ausgabezelle zwar beschränken, der DTPicker trägt seinen Datumswert aber trotzdem ein, auch wenn der ausgewählte Wert außerhalb des beschränkten Bereichs liegt.

Ich habe daraufhin versucht, das auswählbare Maximaldatum über einen VBA-Code (siehe unten) zu beschränken. Wenn ich den Sub ausführe, erscheint keine Fehlermeldung, trotzdem nimmt der DTPicker nur den Wert als Maximalwert, der in seinen Eigenschaften definiert ist und ignoriert die VBA-Anweisung.

Code:
Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)

DTPicker1.MinDate = New DateTime(1990, 1, 01) 
     DTPicker1.MaxDate = DateTime.Today

End Sub
Ich weiß, dass ich auch einfach auf den DTPicker verzichten könnte und die Eingabe über die Tastatur ermöglichen könnte. Ich habe allerdings mittlerweile so lange über dieses Problem gegrübelt, dass ich ungern aufgeben möchte :05:
VIELEN DANK vorab!
Beste Grüße
Lenz
Antworten Top
#2
Hi

Liegt der Picker in einem Tabellenblatt, dann so. Den Code in das Modul dieseArbeitsmappe.
Code:
Private Sub Workbook_Open()
Sheets("Tabelle2").DTPicker1.MaxDate = Date 'Tabelle2 musst du anpassen
End Sub



Ist der Picker in einer Userform.
Code:
Private Sub UserForm_Initialize()
  DTPicker1.MaxDate = Date
End Sub

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • znelreknud
Antworten Top
#3
Moin!
Der DatePicker hat schon seit Äonen nix mehr mit Excel zu tun.
Klar, man kann ihn (halblegal) einbinden.
Schließlich kann man auch Video mit Excel abspielen …
… oder Sudoku spielen …

Heißt:
Du hast kein Excel-Problem, sondern ein Problem mit einem Excel-fremden Control.

Denk mal kurz drüber nach, vor allem, was die Kompatibilität mit fremden Rechnern betrifft.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • znelreknud
Antworten Top
#4
Zitat:Mein Ziel ist, dass im DTPicker nur ein Datum ausgewählt werden kann, das in der Vergangenheit bzw. am heutigen Tag liegt.

Dann wäre ein Combobox einfacher:
Code:
Combobox1.list=[index(text(today()-29+row(1:28),"dd.mm.yyyy"),)]

Und weiter: https://www.snb-vba.eu/VBA_Fill_combobox...l#L_5.4.10
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • znelreknud
Antworten Top
#5
Thumbs Up 
Das funktioniert! Danke elex

Hatte da schon so eine Vermutung, weil online sehr wenig speziell zum DTPicker zu finden war

Kenn ich noch gar nicht, schau ich mir an. Danke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste