Erstmal danke an Ice-Man und Skitch ihr habt mich auf den Richtigen Weg gebracht.
Hiermit möchte ich euch meinen Code zur Verfügung stellen falls jemand noch mal so ein Problem hat.
Man braucht ein Formular mit:
Textbox = txtDatum
UpDownsteuerlement = UpDown1 (Microsoft Common Controls-2)
Button = roCommand1 (benutze SevCommandButton)
Monthview= sevMonthView1 (benutze SevMonthView)
Teil 1:
Option Explicit
Private Sub Form_Load()
Me.txtDatum.Text = Format(Now, "DD.MM.YYYY hh:mm")
End Sub
Private Sub roCommand1_Click()
sevMonthView1.Visible = True
End Sub
Private Sub sevMonthView1_Click(ByVal vDatum As Variant)
Dim sDatum As String
sDatum = Mid(Me.txtDatum, 12, 5)
Me.txtDatum.Text = Format(vDatum & " " & sDatum, "DD.MM.YYYY hh:mm")
Me.sevMonthView1.Visible = False
End Sub
Private Sub txtDatum_Click()
Dim CurPos As Integer
CurPos = Me.txtDatum.SelStart
If CurPos >= 0 And CurPos <= 2 Then
Me.txtDatum.SelStart = 0
Me.txtDatum.SelLength = 2
Me.txtDatum.Tag = "Tag"
ElseIf CurPos >= 3 And CurPos <= 5 Then
Me.txtDatum.SelStart = 3
Me.txtDatum.SelLength = 2
Me.txtDatum.Tag = "Monat"
ElseIf CurPos >= 6 And CurPos <= 10 Then
Me.txtDatum.SelStart = 6
Me.txtDatum.SelLength = 4
Me.txtDatum.Tag = "Jahr"
ElseIf CurPos >= 11 And CurPos <= 13 Then
Me.txtDatum.SelStart = 11
Me.txtDatum.SelLength = 2
Me.txtDatum.Tag = "Stunde"
ElseIf CurPos >= 14 And CurPos <= 16 Then
Me.txtDatum.SelStart = 14
Me.txtDatum.SelLength = 2
Me.txtDatum.Tag = "Minute"
End If
End Sub
Private Sub UpDown1_DownClick()
Dim wert
Dim iSelStart As Integer
Dim iSelLaenge As Integer
Dim sTag As String
Dim sDatum As String
Dim sTime As String
iSelStart = Me.txtDatum.SelStart
iSelLaenge = Me.txtDatum.SelLength
sTag = Me.txtDatum.Tag
sDatum = Me.txtDatum.Text
sTime = Mid(Me.txtDatum, 12, 5)
wert = Me.txtDatum.SelText
If IsNumeric(wert) = False Then
MsgBox "Fehler"
Else
If sTag = "Tag" Then
If CInt(wert) - 1 >= 1 Then
'Me.txtDatum.SelText = wert - 1
Me.txtDatum.Text = Format(DateSerial(Year(sDatum), Month( _
sDatum), Day(sDatum) - 1) & " " & sTime, "DD.MM.YYYY hh:mm")
Me.txtDatum.SelStart = 0
Me.txtDatum.SelLength = 2
End If
ElseIf sTag = "Monat" Then
If CInt(wert) - 1 >= 1 Then
'Me.txtDatum.SelText = wert - 1
Me.txtDatum.Text = Format(DateSerial(Year(sDatum), Month( _
sDatum) - 1, Day(sDatum)) & " " & sTime, "DD.MM.YYYY hh:mm")
Me.txtDatum.SelStart = 3
Me.txtDatum.SelLength = 2
End If
ElseIf sTag = "Jahr" Then
If CInt(wert) - 1 >= 1 Then
Me.txtDatum.SelText = wert - 1
Me.txtDatum.Text = Format(DateSerial(Year(sDatum) + 1, Month( _
sDatum), Day(sDatum)) & " " & sTime, "DD.MM.YYYY hh:mm")
Me.txtDatum.SelStart = 6
Me.txtDatum.SelLength = 4
End If
ElseIf sTag = "Stunde" Then
If CInt(wert) - 1 >= 0 Then
Me.txtDatum.SelText = wert - 1
ElseIf CInt(wert) - 1 < 0 Then
Me.txtDatum.SelText = 23
End If
Me.txtDatum.Text = Format(Me.txtDatum.Text, "DD.MM.YYYY hh:mm")
Me.txtDatum.SelStart = 11
Me.txtDatum.SelLength = 2
ElseIf sTag = "Minute" Then
If CInt(wert) - 1 >= 0 Then
Me.txtDatum.SelText = wert - 1
ElseIf CInt(wert) - 1 < 0 Then
Me.txtDatum.SelText = 59
End If
Me.txtDatum.Text = Format(Me.txtDatum.Text, "DD.MM.YYYY hh:mm")
Me.txtDatum.SelStart = 14
Me.txtDatum.SelLength = 2
End If
End If
If IsDate(Me.txtDatum.Text) = False Then
Me.txtDatum.Text = Format(sDatum, "DD.MM.YYYY hh:mm")
End If
End Sub |