Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Hilfe bei Kalenderwochen (VBA) | Herbers Excel-Forum


Betrifft: Hilfe bei Kalenderwochen (VBA) von: Peter
Geschrieben am: 13.11.2009 21:13:17

Hallo Forum,
wer kann helfen?

Ausgehend von einer beliebigen KW möchte ich alle KW im gleichen Monat in einer UF anzeigen.
Die letzte Kalenderwoche die angezeigt werden soll ist Kalenderwoche die den 1.Tag des Folgemonats enthält

- zum besseren Verständnis siehe UF mit dem VBA Versuch

https://www.herber.de/bbs/user/65884.xls

Danke Peter

  

Betrifft: Kalenderwochen eines Monats (VBA) von: Erich G.
Geschrieben am: 13.11.2009 23:05:59

Hi Peter,
probiers mal damit:

Private Sub CmdWeiter_Click()
   Dim intKW As Integer, intJahr As Integer, ii As Integer
   Dim datVon As Date, datMonBeg As Date, datMontag As Date

   intKW = TxtKWo1.Value
   intJahr = Format(Date, "yyyy")
   datVon = Datum_aus_Woche(intJahr, intKW)
   datMonBeg = datVon - Day(datVon) + 1
   datMontag = datMonBeg - Weekday(datMonBeg, vbTuesday)
   For ii = 0 To 5
      Controls("TxtKWo" & ii + 1).Text = KalenderWoche(datMontag)
      Controls("LblWoVon" & ii + 1).Caption = datMontag
      Controls("LblWoBis" & ii + 1).Caption = datMontag + 6
      datMontag = datMontag + 7
      If Month(datMontag) <> Month(datMonBeg) Then Exit For
   Next ii
End Sub
Die Prozedur überschreibt z. B. bei der Eingabe von 53 (in TxtKWo1)
den Inhalt der TB mit der ersten Woche, die in den Dezember 2009 fällt, also 49.

Die folgenden vier TBs werden mit KW 50 bis 53 gefüllt.
(In anderen Jahren kann es auch vorkommen, dass am Jahresende die nächste KW = 1 ist.)
Manchmal im Februar fallen nur 4 Wochen in den Monat,
manchmal fallen auch 6 Wochen in einen Monat (wenn du z. B. KW 45 vorgibst).

Die in Labels angezeigten Tage muss man nicht kompliziert rechnen - es sind einfach immer 7 mehr.

Ist es das, was du möchtest?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Kalenderwochen eines Monats (VBA) von: peter
Geschrieben am: 14.11.2009 06:52:36

Hallo Erich,
erstmal vielen Dank für Deine schnelle Antwort.

So ganz ist es nicht das was ich meine. Das liegt bestimmt daran,
dass ich mich umständlich ausgedrückt habe.

z.B. - bei der Eingabe von von 47 in der KW Abfrage
brauchen nur die KW 47, KW 48 und KW 49 in der Übersicht der UF
aufgeführt werden

z.B. - bei der Eingabe von von 6 in der KW Abfrage
brauchen nur die KW 6, KW 7, KW 8 und KW 9 in der Übersicht der UF
aufgeführt werden

z.B. - bei der Eingabe von von 9 in der KW Abfrage
brauche nur die KW 9 in der Übersicht der UF
aufgeführt werden

Peter


  

Betrifft: Kalenderwochen bis Ende des Monats von: Erich G.
Geschrieben am: 14.11.2009 09:51:22

Hi Peter,
das geht etwas kürzer. Probier mal:

Private Sub CmdWeiter_Click()
   Dim intKW As Integer, intJahr As Integer, ii As Integer
   Dim datVon As Date, datMontag As Date

   intKW = TxtKWo1.Value
   intJahr = Format(Date, "yyyy")
   datVon = Datum_aus_Woche(intJahr, intKW)
   datMontag = datVon - (datVon - 2) Mod 7
   For ii = 0 To 5
      Controls("TxtKWo" & ii + 1).Text = KalenderWoche(datMontag)
      Controls("LblWoVon" & ii + 1).Caption = datMontag
      Controls("LblWoBis" & ii + 1).Caption = datMontag + 6
      datMontag = datMontag + 7
      If Month(datMontag) <> Month(datVon) Then Exit For
   Next ii
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort - Schönes WoEnde!


  

Betrifft: AW: Kalenderwochen bis Ende des Monats von: Peter
Geschrieben am: 14.11.2009 19:42:06

Hallo Erich,
ich möchte mich ganz herzlich für die Mühe die Du dir gemacht hast bedanken.
Deine Erklärungen sind sehr hilfreich. Dadurch komme ich endlich weiter.

Ich wünsche Dir ein schönes Restwochenende
Peter


  

Betrifft: noch ein Tipp: KW immer mit Jahr von: Erich G.
Geschrieben am: 14.11.2009 10:20:53

Hi Peter,
hin und wieder kannst du damit Probleme bekommen, wenn du nur die KW eingeben lässt.
Es gibt Jahre, in denen eine KW-Nr. zweimal auftritt - am Anfang und am Ende des Jahres.

Beispiele:

 ABCD
1DatumKWvonbis
2Mi  02.01.20081Mo  31.12.2007So  06.01.2008
3Di  30.12.20081Mo  29.12.2008So  04.01.2009
4    
5So  01.01.201252Mo  26.12.2011So  01.01.2012
6Do  27.12.201252Mo  24.12.2012So  30.12.2012
7    
8Mi  02.01.20131Mo  31.12.2012So  06.01.2013
9Mo  30.12.20131Mo  30.12.2013So  05.01.2014

Formeln der Tabelle
ZelleFormel
B2=KalenderWoche(A2)
C2=A2-REST(A2-2;7)
D2=C2+6

Wenn du in 2012 eine 52 oder in 2013 eine 1 als KW vorgibst, ist nicht klar,
welche der jeweils beiden Wochen gemeint ist. Das KW-Jahr müsste auch vorgegeben werden.

Dazu könntest du dir auch das mal ansehen: http://www.excelformeln.de/formeln.html?welcher=7

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: Kalenderwoche mit Jahr von: Erich G.
Geschrieben am: 14.11.2009 18:52:31

Hi Peter,
hier noch ein paar Excelformeln und Beispiele, wo das KW-Jahr eine Rolle spielt:
( in Anlehnung an http://www.excelformeln.de/formeln.html?welcher=7 )

 ABCD
1Berechnung des KW-Jahres und der KW mit dem KW-Jahr
2    
3Datum29.12.200803.01.2010 
4KW (natürlich wie bisher)153 
5KW-Jahr bisherige Formel20092009 
6KW-Jahr bisherige Formel20092009 
7KW-Jahr20092009 
8    
9W/JJJJ als Text - bisherige Formel1/200953/2009schlecht für Sort
10JJJJ/WW als Text2009/012009/53besser für Sort
11Jahr daraus20092009 
12KW daraus153 
13    
14JJJJ,WW als Dezimalzahl2009,012009,53besser für Sort
15Jahr daraus20092009 
16KW daraus153 
17    
18    
19Anzahl der KW des Jahres vs. Anzahl der KW im Jahr
20    
21Jahr200920102012
22Anzahl Wochen des Jahres (wie bisher)535252
23Anzahl Wochen im Jahr - Variante 1535354
24Anzahl Wochen im Jahr - Variante 2535354

Formeln der Tabelle
ZelleFormel
B4=KÜRZEN((B3-DATUM(JAHR(B3+3-REST(B3-2;7)); 1;REST(B3-2;7)-9))/7)
B5=JAHR(B3)-(MONAT(B3)=1)*(B4>9)+(MONAT(B3)=12)*(B4=1)
B6=MIN(JAHR(B3-1-REST(B3-2;7)+4); JAHR(B3-REST(B3-1;7)+4))
B7=JAHR(B3+3-REST(B3-2;7))
B9=KÜRZEN((B3-DATUM(JAHR(B3+3-REST(B3-2;7)); 1;REST(B3-2;7)-9))/7)&"/"&MIN(JAHR(B3-1-REST(B3-2;7)+4); JAHR(B3-REST(B3-1;7)+4))
B10=JAHR(B3+3-REST(B3-2;7))&"/"&TEXT(KÜRZEN((B3-DATUM(JAHR(B3+3-REST(B3-2;7)); 1;REST(B3-2;7)-9))/7); "00")
B11=--LINKS(B10;4)
B12=--RECHTS(B10;2)
B14=JAHR(B3+3-REST(B3-2;7))+KÜRZEN((B3-DATUM(JAHR(B3+3-REST(B3-2;7)); 1;REST(B3-2;7)-9))/7)/100
B15=KÜRZEN(B14;)
B16=100*REST(B14;1)
B22=52+(TAG(346-REST("2.1."&B21;7)+("1-"&B21))<8)
B23=53+(TAG(("1.3."&B21)-1)=29)*(TEXT("1.1."&B21;"TTT")="So")
B24=53+(TAG(("1.3."&B21)-1)=29)*(REST("1.1."&B21;7)=1)

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


Beiträge aus den Excel-Beispielen zum Thema "Hilfe bei Kalenderwochen (VBA)"