Bitte um VBA Hilfe
Aus einer Jahreszahl sollten jeweils alle Donnerstage mit Datum aus diesem Jahr in eine Tabelle eingetragen werden!
siehe Testmappe
Vielen Dank für Eure Hilfe
Gruß Gerhard
https://www.herber.de/bbs/user/135835.xlsm
A | B | C | D | E | F | |
1 | 2020 | Januar | Bemerkung | Februar | Bemerkung | März |
2 | ||||||
3 | Do 02.01.2020 | Do 06.02.2020 | Do 05.03.2020 | |||
4 | Do 09.01.2020 | Do 13.02.2020 | Do 12.03.2020 | |||
5 | Do 16.01.2020 | Do 20.02.2020 | Do 19.03.2020 | |||
6 | Do 23.01.2020 | Do 27.02.2020 | Do 26.03.2020 | |||
7 | Do 30.01.2020 | |||||
8 |
verwendete Formeln | |||
Zelle | Formel | Bereich | R1C1 für Add In |
B3,D3,F3 | =DATWERT("1."&B1 &$A$1)+5-REST(DATWERT("1."&B1 &$A$1);7) | =DATEVALUE("1."&R[-2]C &R1C1)+5-MOD(DATEVALUE("1."&R[-2]C &R1C1),7) | |
B4:B7,D4: D7,F4:F7 | =WENN(MONAT(B3)=MONAT(B3+7);B3+7;"") | =IF(MONTH(R[-1]C)=MONTH(R[-1]C+7),R[-1]C+7,"") |
Option Explicit
Sub Donnerstage()
Dim Sp As Integer, MA As Date, TTag As Date, Z1 As Integer, Zeile As Integer
Dim WT As Integer, Jahr As Integer
WT = 4 'Donnerstag
Jahr = Cells(1, 1)
Z1 = 3 'erste Zeile
'Reset
Rows(Z1).Resize(5).Clear
For Sp = 2 To 24 Step 2
Zeile = Z1 'Zeile, in die geschrieben wird
MA = DateSerial(Jahr, Sp / 2, 1) 'Monatsanfang
If Weekday(MA, vbMonday) <= WT Then
TTag = WT - Weekday(MA, vbMonday) + MA
Else
TTag = 7 - Weekday(MA, vbMonday) + WT + MA
End If
Do Until TTag > DateSerial(Jahr, Month(MA) + 1, 0)
With Cells(Zeile, Sp)
.Value = TTag
.NumberFormat = "DDD DD.MM"
End With
TTag = TTag + 7
Zeile = Zeile + 1
Loop
Next
End Sub