--
Eckehard Pfeifer
(http://home.t-online.de/home/Dr.Eckehard.Pfeifer)
Das VBA-Magazin - ein Blick lohnt sich immer: www.vba-magazin.de
Ausführliche Informationen zur ViBAT: http://www.vba-magazin.de/vibat
Danke!
Christian
Function DINKw(Tag)
DINKw = DatePart("ww", Tag, vbMonday, vbFirstFourDays)
End Function
Anwendung:
A1: 05.01.2000
A2: =DinKw(A1) -> 1
MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de
Am Wed, 5 Jan 2000 12:46:18 +0100, schrieb "Christian Zeller"
<christia...@deuter.com> in microsoft.public.de.excel zu
"Funktion Kalenderwoche liefert falsche Werte":
Hallo Frank,
deine Funktion liefert leider auch falsche Werte, z.B. am 29.12.2003 .Hier eine
angepasste Funktion.
Function Kalwoche(Tag)
Kalwoche = ((DatePart("ww", Tag, 2, 2) = 53) _
And (Day(Tag) >= 29) And (WeekDay(Tag, 2) = 1)) _
* 52 + DatePart("ww", Tag, 2, 2)
End Function
MfG
Michael
MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de
Am Wed, 5 Jan 2000 23:08:27 +0100, schrieb "Michael Schwimmer"
<Schw...@T-Online.de> in microsoft.public.de.excel zu "Re: Funktion
Kalenderwoche liefert falsche Werte":
>Function Kalwoche(Tag)
Die Funktion DatePart macht den 29.12.2003, wenn Parameter 3 und/oder 4
gesetzt werden, zu Wochentag 1 (also Sonntag) statt Wochentag 2 (also
Montag). Die Anzeige des Wochentagnamens funktioniert aber wieder korrekt.
Daraus resultiert die falsche Zuordnung. Sieht nach einem Bug in VBA aus.
Das Gleiche passiert auch bei der Format-Funktion.
Unter der Voraussetzung, daß wie im Fall des 29.12.2003 die Funktion
DatePart ohne 3. und 4. Parameter den richtigen Wochentag liefert, kann die
Funktion DINKW so angepaßt werden:
Public Function DINKW(Datum As Date) As Integer
DINKW = DatePart("ww", Datum + DatePart("w", Datum) _
- DatePart("w", Datum, vbMonday,
vbFirstFourDays), _
vbMonday, vbFirstFourDays)
End Function
Mir ist klar, daß diese Funktion nicht richtig funktioniert, wenn das
Problem auch auf Samstag/Sonntag fällt (wegen Wochentagnummer 7 bzw. 1). In
der Hoffnung, daß VBA nicht so schlimm falsch läuft, nur diese kleine
Anpassung.
Jörg
Frank Arendt-Theilen <Thei...@t-online.de> schrieb in im Newsbeitrag:
8sh77ssjh21vjqljc...@4ax.com...
MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de
Am Thu, 6 Jan 2000 09:40:32 +0100, schrieb "Jörg Nissen"
<joerg....@t-online.de> in microsoft.public.de.excel zu "Re:
ich hätte mal erst eine allgemeine Frage für mich als Excel97-
anfänger. Wie bekomme ich Excel dazu, daß es die Function DINKW
(habe ich in Tabelle1 und DieseArbeitsmappe probiert) auch verwenden
kann? Wenn ich über den Assistenden gehe, kommt eine Fehlermeldung,
daß die Funktion keine Argumente will und wenn ich den Namen DINKW(a1)
direkt eingebe, kommt #NAME? zurück :(.
Wie muss ich das bitte schön anstellen?
MfG
Marco
Hallo Frank,
irgendwann im November war das mal Thema in microsoft.public.de.vb .
Selber wäre ich aber auch nicht drauf gekommen, dass da was nicht passt.
BTW, die angepasste Funktion von Jörg funktioniert auch nicht, zumindestens
am 4.1.2004 und 6.1.2008 wird KW 53 zurückgeliefert.
Hier nochmal meine Funktion, aber etwas kürzer.
Function Kalwoche(Tag)
Kalwoche = (DatePart("ww", Tag, 2, 2) = 53 _
And (Day(Tag) >= 29) And Tag Mod 7 = 2) _
* 52 + DatePart("ww", Tag, 2, 2)
End Function
MfG
Michael
Am Thu, 06 Jan 2000 14:09:38 +0100, schrieb Marco Amistadi
<ma...@amistadi.de> in microsoft.public.de.excel zu "Re: Funktion
Kalenderwoche liefert falsche Werte":
>Hallo Frank, Jörg und Michael,
>Hallo Christian,
>XL arbeitet bei der Kalenderwochenermittlung standardmäßig nicht nach
>der DIN1355. Benutze daher die folgende Funktion:
>
>Function DINKw(Tag)
> DINKw = DatePart("ww", Tag, vbMonday, vbFirstFourDays)
>End Function
>>Kann mit jemand sagen warum die Funktion "Kalenderwoche(23.11.99;2)" den
>>Wert 48 als Woche
>>liefert und nicht 47?
Die Erklaerung steckt im letzten Argument von DatePart (siehe o.a. Funktion
DINKw). Es gibt unterschiedliche Moeglichkeiten, Wochen zu zaehlen. Excel
unterstuetzt drei:
- erste Woche ist Woche, die den 1.1. enthaelt
- erste Woche ist Woche, die den 4.1. enthaelt
- erste Woche ist die erste, die vollstaendig im gleichen Jahr liegt
Voreingestellt in XL ist und von der Funktion Kalenderwoche benutzt wird die
erste Variante. In Deutschland gueltig ist aber die zweite. Deswegen.
Gruss, Tom
---
T. Bihr @ work
Die Tastenkombination <ALT+F11> bringt Dich in den VBA-Editor.
Dort musst Du die Funktion schreiben oder reinkopieren.
Erst dann kannst Du sie verwenden!!!!!!
Bei Fragen, melde Dich per E-Mail :-)
Gruß
Peter
Marco Amistadi schrieb:
danke vielmals für die Tips. Es lag daran, daß ich die
Funktion in 'DieseArbeitsmappe' oder 'Tabelle1' eintragen
wollte :(. Nun gut, mit 'Modul' gefällt mir das nun besser :).
Ähm ... etwas OT, aber trotzdem mal gefragt: Gibts unter XL8
noch die Möglichkeit Add-Ins zu erstellen? Ich will 'meine'
Statusleistenanzeige mir als Add-In basteln und einfach am
Anfang laden, damit alle Mappen drauf zugreifen können. Oder
sollte ich die Funktion lieber in die Personl.xls (?) schreiben?
Für Tips und Anregungen wäre ich euch Dankbar.
Wer die Funktion (Fortschrittsanzeige in der Statusleiste)
auch haben will, möchte sich bitte mal per Mail melden.
mailto:ex...@pixeltester.de
MfG
Marco
MfG Frank
__________________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel
E-Mail: Thei...@t-online.de
Am Sun, 09 Jan 2000 02:26:34 +0100, schrieb Marco Amistadi
<ma...@amistadi.de> in microsoft.public.de.excel zu "Re: Funktion
Kalenderwoche liefert falsche Werte":
>Hallo Frank und Peter,