Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datums Schleife für die KW

Datums Schleife für die KW
22.02.2019 13:17:41
Giorgi
Hallo, ich hab leider nichts durch die Forensuche gefunden.
Ich bin an einer Projektdatei dran und möchte per VBA folgendes:
Ich hab ein Startdatum in Zelle A4 dd.mm.yyyy und möchte dementsprechend mir die KW anzeigen lassen.Dies habe ich mit dem folgenden Code unten auch lösen können.
Mir wird die KW in Zelle E1 angezeigt. Nun möchte ich jedoch, dass die KW alle 4 Spalten um +1 addiert wird. (Also in I1 KW aus E1 +1 in M1 KW aus E2+2 bis das Jahr zu Ende ist)
Desweiteren soll am Anfang der Spalte also in I2 das Anfangsdatum (der Montag) der KW stehen und in L2 dann das Datum aus I2 plus 4 Tage (D.h. mir den Freitag anzeigen lassen). Dies soll dann automatisch durch eine Schleife für jede KW Spalte durchgeführt werden bis zum Ende des Jahres.
Ich bin für jeden Tipp sehr dankbar.
Datum Formatierung
Public Sub kw_ermitteln()
'kw = DINKw("01.08.2002")
kw = DINKw(Range("A4"))
Range("E1").Value = kw
End Sub
Function DINKw(dat As Date) As Integer
Dim kw As Integer
kw = Int((dat - DateSerial(Year(dat), 1, 1) + _
((Weekday(DateSerial(Year(dat), 1, 1)) + 1) _
Mod 7) - 3) / 7) + 1
If kw = 0 Then
kw = DINKw(DateSerial(Year(dat) - 1, 12, 31))
ElseIf kw = 53 And (Weekday(DateSerial(Year(dat), 12, 31)) - 1) Mod 7 

Gruß Giorgi

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datums Schleife für die KW
22.02.2019 14:05:15
Sepp
Hallo Giorgi,
so?
Public Sub kw_ermitteln()
  Dim lngKW As Long, lngIndex As Long, lngYear As Long
  Dim datMonday As Date

  If IsDate(Range("A1")) Then
    lngYear = Year(Range("A1"))
    lngKW = Application.WeekNum(Range("A1"), 21)
    datMonday = DateSerial(lngYear, 1, 4) + lngKW * 7 - 7 - (DateSerial(lngYear, 1, 2) Mod 7)
    For lngIndex = 4 To 212 Step 4
      If Year(datMonday + (lngIndex / 4 - 1) * 7) <= lngYear Then
        Cells(1, lngIndex + 1) = lngKW + lngIndex / 4 - 1
        Cells(2, lngIndex + 1) = datMonday + (lngIndex / 4 - 1) * 7
        Cells(2, lngIndex + 4) = Cells(2, lngIndex + 1) + 4
      Else
        Cells(1, lngIndex + 1) = ""
        Cells(2, lngIndex + 1) = ""
        Cells(2, lngIndex + 4) = ""
      End If
    Next
  End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Datums Schleife für die KW
26.02.2019 09:44:58
Giorgi
Hallo Sepp,
ich lag am Wochenende leider mit einer Grippe flach.
Ich hab den Code heute implementiert und er funktioniert wunderbar unter Office 365.
Ich danke dir vielmals für die Unterstützung.
Gruß Giorgi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige