Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kalenderwoche ungerade oder gerade?

257 views
Skip to first unread message

Ulrich Haarmeyer

unread,
Nov 2, 2002, 11:54:13 AM11/2/02
to
Sieh mal ein paar zeilen tiefer die Frage von Häusler Bibi.
War das gleiche Problem.

Gruß
Uli

"Siegfried Hubert" <Siegfrie...@t-online.de> schrieb im Newsbeitrag
news:aq0vkk$aln$05$1...@news.t-online.com...
> Hallo Leute,
> wie kann ich prüfen, ob die Kalenderwoche eines gegebenen Datums gerade
oder
> ungerade ist?
> Die Kalenderwoche ermittele ich so:
> tmpWoche = Format(tmpDatum, "WW", vbMonday)
>
> Ich brauche aber nicht die Kalenderwoche selbst, sondern ich muss prüfen,
ob
> es eine ungerade oder gerade Woche ist.
>
> Gruß Siegfried
>
>


Siegfried Hubert

unread,
Nov 2, 2002, 11:48:01 AM11/2/02
to

Siegfried Hubert

unread,
Nov 2, 2002, 1:00:52 PM11/2/02
to
Hallo Ulrich,
danke für Deine Antwort.

> Sieh mal ein paar zeilen tiefer die Frage von Häusler Bibi.
> War das gleiche Problem.

Ja, das war in einer Abfrage. Außerdem weiß ich nicht, was MOD2 ist. :-)

Ich brauche das aber im VBA-Code.

Irgendwie so: tmpWoche = Format(tmpDatum, "WW", vbMonday)
If tempWoche gerade then
...
else
...

Gruß Siegfried


Ulrich Haarmeyer

unread,
Nov 2, 2002, 1:22:14 PM11/2/02
to
Hallo Siegfried
Dann versuchs mal mit diesem:
Dim KW as Integer
KW=Format(tmpDatum, "WW", vbMonday)
If Int(Kw/2)*2 = KW then
'KW ist gerade
else
'KW ist nicht gerade
End if

Gruß
Uli

"Siegfried Hubert" <Siegfrie...@t-online.de> schrieb im Newsbeitrag

news:aq13t0$jqe$04$1...@news.t-online.com...

Siegfried Hubert

unread,
Nov 2, 2002, 1:58:14 PM11/2/02
to
Hallo Ulrich,

> Dann versuchs mal mit diesem:
> Dim KW as Integer
> KW=Format(tmpDatum, "WW", vbMonday)
> If Int(Kw/2)*2 = KW then
> 'KW ist gerade
> else
> 'KW ist nicht gerade

Ja, so komme ich weiter. Vielen Dank! :-)
Ich verstehe allerdings nicht ganz wie. :-)
Würdest Du mir bitte noch kurz erklären, wie dieses Konstrukt funktioniert:


> If Int(Kw/2)*2 = KW then
> 'KW ist gerade

Es funktioniert, aber ich verstehe nicht warum. :-)

Gruß Siegfried


F.Uesbeck

unread,
Nov 2, 2002, 2:12:10 PM11/2/02
to
Hallo Siegfried
mach es so

Dim KW as Integer
KW=Format(tmpDatum, "WW", vbMonday)

If KW/2 = KW \2 then


'KW ist gerade
else
'KW ist nicht gerade

End if

Gruß
Felix


Ulrich Haarmeyer

unread,
Nov 2, 2002, 2:49:47 PM11/2/02
to
Hallo Siegfried.
Wäre nett wenn du gelegentlich mal die Onlinehilfe zur Problemlösung bemühst
:-)
Da sind sowohl das Kommando MOD als auch INT beschrieben
Also bei Int(KW/2) wird der Wert von KW durch 2 geteilt und der
Nachkommateil abgeschnitten.
Das Ergebnis wird wieder mit 2 multipliziert.
Dann wird das Ergebnis mit dem ursprünglichen Wert von KW verglichen und
kann nur übereinstimmen wenn KW eine gerade Zahl war.
If KW Mod 2>0 then
wäre auch möglich.
Dann wäre allerdings die KW gerade wenn das Ergebnis = 0 ist, ansonsten
ungerade

Gruß
Uli

"Siegfried Hubert" <Siegfrie...@t-online.de> schrieb im Newsbeitrag

news:aq178u$gnu$02$1...@news.t-online.com...

Henry Habermacher [MVP Access]

unread,
Nov 4, 2002, 4:23:39 AM11/4/02
to
Hallo Siegfried

"Siegfried Hubert" <Siegfrie...@t-online.de> wrote in message
news:aq178u$gnu$02$1...@news.t-online.com...

Dann versuch's halt trotzdem mal mit Mod 2 ;-)

zB:
Dim KW as Integer
KW = Format(tmpDatum, "WW", vbMonday)
If KW Mod 2 = 0 then
'KW ist gerade
Else
'KW ist ungerade
End If

Mod X gibt den Rest zurück, der sich bei der Division einer Zahl durch X
ergibt. Im konkreten Fall gibt Mod 2 also 0 zurück, falls die Zahl durch
2 teilbar (und damit gerade) ist, andernfalls gibt Mod 2 eine 1 zurück.

HTH und ist verständlicher

Gruss
Henry

--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
MVP: http://mvp.support.microsoft.com

Jürgen Volke

unread,
Nov 4, 2002, 4:34:28 AM11/4/02
to
Hallo Henry

das ist Ansichtssache!

ich versteh obiges besser *bg*

Int schneidet den Nachkommateil ab. Beispiel:

5. Woche -> kw/2 = 2,5 -> Int(kw/2)=2 -> int(kw/2)*2=4
6. Woche -> kw/2=3 -> int(kw/2)=3 -> int(kw/2)*2=6

Gruß Jürgen


Henry Habermacher [MVP Access]

unread,
Nov 4, 2002, 4:39:09 AM11/4/02
to
Hallo Jürgen

"Jürgen Volke" <juerge...@hotmail.com> wrote in message
news:aq5ev4$da7$02$1...@news.t-online.com...


>
> das ist Ansichtssache!
>
> ich versteh obiges besser *bg*
>
> Int schneidet den Nachkommateil ab. Beispiel:
>
> 5. Woche -> kw/2 = 2,5 -> Int(kw/2)=2 -> int(kw/2)*2=4
> 6. Woche -> kw/2=3 -> int(kw/2)=3 -> int(kw/2)*2=6

Abgesehen von marginalen Performancenachteilen bei der Verwendung einer
Division (die Mod 2 Operation liest einfach nur das letzte Bit des
Integers aus), sehe ich keinen Unterschied im Ergebnis. Auch Mod kann
mit Komawerten nichts anfangen, weil es diese für Integers nicht gibt.

Gruss
Henry

0 new messages