Datum -> KW -> Label

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 10.0 (Office XP)
nach unten

Betrifft: Datum -> KW -> Label
von: andreas
Geschrieben am: 15.06.2002 - 23:02:59

Hallo Excel&VBA-Gemeinde,

ich komme bei folgendem Problem einfach nicht weiter:

In einer Textbox wird ein Datum im Format TT.MM.YY eingegeben. Nach Textbox_Change möchte ich, daß die Kalenderwoche aus diesem Datum in einem Label dieser Userform anzeigt wird.

Funktionen zur Berechnung der KW habe ich schon gefunden, nur weiß ich nicht, wie ich diese Funktion einbinde.

Danke schon mal.

Bis bald
Andreas

nach oben   nach unten

Re: Datum -> KW -> Label
von: Mischa Richter
Geschrieben am: 15.06.2002 - 23:14:54

hei,
wenn dir gar nix hilft, dann maile mal, ich habe ein komplettes programm hierfür - miaj@addcom.de
evtl. hilft dir auch: dinweek - suche mal nach diesem begriff im www.

Mischa

nach oben   nach unten

Re: Datum -> KW -> Label
von: Philip
Geschrieben am: 16.06.2002 - 08:41:39

?!?
Geht es nicht ganz einfach mit:

Textbox_afterupdate()
KW = deine Kalenderwoche Nummer
Let Labelname = KW

?
Gruß,
Philip

nach oben   nach unten

Re: Datum -> KW -> Label
von: Hajo
Geschrieben am: 16.06.2002 - 09:25:31

Hallo Andreas

versuchs so


Private Sub TextBox1_Change()
    Dim i%
    If Not IsDate(TextBox1) Then
        Label1.Caption = ""
        Exit Sub
    Else
        If Weekday(TextBox1) = 1 Then i = 1 Else i = 0
        Label1.Caption = Format(TextBox1, "ww", , vbFirstFourDays) - i
    End If
End Sub

Gruß Hajo


nach oben   nach unten

Re: Datum -> KW -> Label
von: andreas
Geschrieben am: 16.06.2002 - 11:43:56

Hallo Hajo,

ich habe deinen Code eingebaut, das Ergebnis:

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox2) Then
If Not IsNumeric(TextBox2) Then
MsgBox "Kein Datum"
Else
If InStr(TextBox2, ".") = 0 Then
If Len(TextBox2.Value) = 6 Then TextBox2.Value = Left(TextBox2.Value, 4) & "20" & Right(TextBox2.Value, 2)
TextBox2.Value = Left(TextBox2.Value, 2) & "." & Mid(TextBox2.Value, 3, 2) & "." & Right(TextBox2.Value, 4)
If Not IsDate(TextBox2) Then MsgBox "Kein Datum"
End If
End If
End If
End Sub
Private Sub TextBox2_Change()
Dim i%
If Not IsDate(TextBox2) Then
Label1.Caption = ""
Exit Sub
Else
If Weekday(TextBox2) = 1 Then i = 1 Else i = 0
Label1.Caption = TextBox1.Text & "-" & Format(TextBox2, "ww", , vbFirstFourDays) - i & "/" & Right(TextBox2.Value, 2)
End If
End Sub

Funktioniert auf den ersten Blick gut. Warum zeigt der Code für den 29.12.2002 die KW 0 an? Kann man den Code ändern, dass eine einstellige KW zweistellig (z. B. 01) angezeigt wird?

Trotzdem Danke für die Hilfe.

Und tschüß
Andreas

nach oben   nach unten

Re: Datum -> KW -> Label
von: Hajo
Geschrieben am: 16.06.2002 - 16:52:43

Hallo Andreas

ich war davon ausgegangen das die Funtion das richtig berechnet, aber irgendwie liegt ein Fehler im Detail. Nun habe ich mich für eine andere Funktion entschieden und die zweistellige Anzeige in meinen Code eingebaut.


Private Sub TextBox1_Change()
    Dim tmp
    If TextBox1 = "" Then Exit Sub
    If IsError(CDate(TextBox1)) Then
        Label1.Caption = ""
        Exit Sub
    Else
'       Diese Funktion stammt von Christoph Kremer.
        tmp = DateSerial(Year(CDate(TextBox1) + (8 - Weekday(CDate(TextBox1))) Mod 7 - 3), 1, 1)
        Label1.Caption = Format(((CDate(TextBox1) - tmp - 3 + (Weekday(tmp) + 1) Mod 7)) \ 7 + 1, "00")
    End If
End Sub

Gruß Hajo


nach oben   nach unten

Re: Datum -> KW -> Label
von: andreas
Geschrieben am: 16.06.2002 - 22:16:42

Hallo Hajo,

läuft noch nicht...

Ich bekomme immer eine Fehlermeldung Laufzeitfehler 13 Typen unverträglich.

(CDate(TextBox1)) "Typen unverträglich"
Kannst du dir bitte nochmal o. g. Code anschauen?

Und tschüß
andreas


nach oben   nach unten

Re: Datum -> KW -> Label
von: andreas
Geschrieben am: 16.06.2002 - 22:58:56

Hallo Hajo,

ich glaube, dass ich den Fehler gefunden habe.
Folgende Zeile sollte geändert werden:

Label1.Caption = Format(TextBox1, "ww", , vbFirstFourDays) - i

Label1.Caption = Format(TextBox1, "ww", vbMonday, vbFirstFourDays)

Jetzt wird zwar die richtige KW angezeigt, aber KW 1-9 nur einstellig. Kann man das noch ändern?

Und tschüß
Andreas

nach oben   nach unten

Re: Datum -> KW -> Label
von: Hajo
Geschrieben am: 17.06.2002 - 06:57:19

Hallo Andreas

Du mußt mal was dazu schreiben wie Du den Fehler auslöst. Ich bin davon ausgegangen das ein Datum eingegeben werden soll, also nur Zahlen. Bei mir kommt es nur zu einen Fehler beiEingabe von Buchstaben. Dafür ändere die erste Zeile wie folgt


    If TextBox1 = "" Or Not IsNumeric(TextBox1) Then Exit Sub

Sollten beim nächsten mal keine genaueren Erklärungen erfolgen, ist der Beitrag für mich abgeschlossen.

Gruß Hajo


nach oben   nach unten

Re: Datum -> KW -> Label
von: Hajo
Geschrieben am: 17.06.2002 - 07:00:21

Hallo Andreas

aus irgendeinem Grunde wurde die Zeile nicht komplett dargestellt


        Label1.Caption = Format(((CDate(TextBox1) - tmp - 3 + (Weekday(tmp) + 1) Mod 7)) \ 7 + 1, "00")

Gruß Hajo


nach oben   nach unten

Re: Datum -> KW -> Label
von: Hajo
Geschrieben am: 17.06.2002 - 07:25:34

Hallo Andreas

diese Code Zeile ist aus meinem letzten Code. Bitte Beachten. Den ersten Code habe ich nicht aufgehoben.

Gruß Hajo


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Grafiken importieren"