VBA Werktage in Zellen eintragen
Hy
mit den Werktage ist das so eine Sache, wie man zw. 2 Datumseinträge die Werktage
auslesen kann, geht ja, aber ich bräuchte eine etwas andere Funktion,
und zwar habe ich in einem Worksheet in Zelle "A2" ein Datum stehen
von dem lese ich das Monat aus und speichere dies in eine Variable.
Jetzt hätt ich gerne dass VBA jetzt erkennt welche Tage von diesem Monat
Werktage sind und die soll mir VBA in ein anderes Worksheet in Spalte "A"
eintragen.
Dann würde eine Formel greifen die sich auf die Spalte "A" bezieht.
ich hoffe das kann man realisieren...
lg
ava
mit den Werktage ist das so eine Sache, wie man zw. 2 Datumseinträge die Werktage
auslesen kann, geht ja, aber ich bräuchte eine etwas andere Funktion,
und zwar habe ich in einem Worksheet in Zelle "A2" ein Datum stehen
von dem lese ich das Monat aus und speichere dies in eine Variable.
Jetzt hätt ich gerne dass VBA jetzt erkennt welche Tage von diesem Monat
Werktage sind und die soll mir VBA in ein anderes Worksheet in Spalte "A"
eintragen.
Dann würde eine Formel greifen die sich auf die Spalte "A" bezieht.
ich hoffe das kann man realisieren...
lg
ava
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 149287
Url: https://administrator.de/contentid/149287
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Avalon1!
Könnte etwa so aussehen:
Um Feiertage musst Du Dich natürlich zusätzlich kümmern ...
Grüße
bastla
Könnte etwa so aussehen:
Sub Werktage()
AbZeile = 2 'erste Zeile Zieltabelle
Spalte = "A" 'Spalte Zieltabelle
Datum = Worksheets("Tabelle1").Range("A2").Value
Von = DateSerial(Year(Datum), Month(Datum), 1) 'erster Tag des Monats
Bis = DateAdd("m", 1, Von) - 1 'erster Tag des nächsten Monats - 1 = letzter Tag dieses Monats
Zeile = AbZeile
With Worksheets("Tabelle2")
For D = Von To Bis 'Schleife für alle Tage des Monats
If Weekday(D) <> vbSunday And Weekday(D) <> vbSaturday Then ' wenn Tag weder So noch Sa ist, ...
.Cells(Zeile, Spalte) = D '... Datum eintragen
Zeile = Zeile + 1
End If
Next
End With
End Sub
Grüße
bastla
Hallo Avalon1 und Hallo bastla!
...wobei sich die Feiertage und sonstige Ausschlusstage (Brückentage...) z.B. in Tabelle 3 Range(A2:L7) in einer Tabelle befinden könnten.
In Zeile 2 sind die Monate von 1-12 und ab Zeile 3 die Tage in den entsprechenden Monatsspalten eingetragen
und mit diesem Code wird diese Tabelle dann auf Ausschlusstage geprüft:
Das ließe sich dann in bastlas Codezeile 10 in etwa so mit einbinden:
Gruß Dieter
PS. Die Tabelle kann natürlich auch ausgeblendet werden
...wobei sich die Feiertage und sonstige Ausschlusstage (Brückentage...) z.B. in Tabelle 3 Range(A2:L7) in einer Tabelle befinden könnten.
In Zeile 2 sind die Monate von 1-12 und ab Zeile 3 die Tage in den entsprechenden Monatsspalten eingetragen
A | B | C | D | E | F | G | H | I | J | K | L | |
2 | ##blue | 1 ## | ##blue | 2 ## | ##blue | 3 ## | ##blue | 4 ## | ##blue | 5 ## | ##blue | 6 ## | ##blue | 7 ## | ##blue | 8 ## | ##blue | 9 ## | ##blue | 10 ## | ##blue | 11 ## | ##blue | 12 ## |
3 | ##red | 1 ## | ##red | 2 ## | ##red | 1 ## | ##red | 3 ## | ##red | 3 ## | ##red | 1 ## | ##red | 25 ## | |||||
4 | ##red | 6 ## | ##red | 5 ## | ##red | 13 ## | ##red | 26 ## | ||||||||
5 | ##red | 24 ## | |||||||||||
6 | ||||||||||||
7 |
Const SheetHoliday = "Tabelle3"
Const RangeHoliday = "A2:L7"
Private Function IsHoliday(ByVal Datum As Date) As Boolean
Dim V As Variant, i As Integer
V = Sheets(SheetHoliday).Range(RangeHoliday).Value
For i = 2 To UBound(V, 1)
If Not IsEmpty(V(i, Month(Datum))) Then
If Day(Datum) = V(i, Month(Datum)) Then IsHoliday = True: Exit Function
End If
Next
End Function
... And IsHoliday(D) = False Then .... |
Gruß Dieter
PS. Die Tabelle kann natürlich auch ausgeblendet werden