Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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

Feiertage und Wochenenden überspringen

Feiertage und Wochenenden überspringen
15.12.2020 22:46:14
harald
Hallo zusammen,
ich habe folgendes Problem: Ich möchte unter anderem in einer Zelle, sowie in einer Message Box das heutige Datum plus 4 Tage ausgeben. Ausgenommen werden sollen Wochenenden und Feiertage. Diese habe ich in einem Reiter "Kalender" im folgenden Format angegeben (Spalte A und B).

05.12.2020 Samstag
06.12.2020 Sonntag
12.12.2020 Samstag
13.12.2020 Sonntag
19.12.2020 Samstag
20.12.2020 Sonntag
24.12.2020 Donnerstag
26.12.2020 Samstag
27.12.2020 Sonntag

Leider scheint etwas nicht ganz zu funktionieren, es werden lediglich keine Wochenenden genommen und wie gewünscht übersprungen. Der 24.12 als Feiertag beschrieben wird stattdessen mitgezählt. Wie kann ich das ändern?
Sub Übertrag_Wochentag()
Set wb = Workbooks("eins.xlsm")
Application.ScreenUpdating = False
ActiveWorkbook.Names.Add Name:="FreieTage", RefersToR1C1:= _
"=Kalender!R1C7:R5C7"
Workbooks("eins.xlsm").Worksheets("blatt2").Range("A9").Value = "=WORKDAY(TODAY(),4,FreieTage)"
MsgBox "Tageseinlastung übertragen für: " & Sheets("blatt2").Range("C9") & " " & Sheets("blatt2" _
).Range("A9")
Else

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
R1C7:R5C7
16.12.2020 06:54:59
RPP63
sind nun mal nur die oberen 5 Zeilen in Spalte G …
Gruß Ralf
Ach so
16.12.2020 07:03:16
RPP63
Wochenenden brauchst Du nicht auflisten!
Die werden bereits mittels Workday() aussortiert.
AW: R1C7:R5C7
16.12.2020 08:42:16
harald
Weiß nicht genau was du mit "5 Zeilen in Spalte G" meinst. Wo beziehe ich mich auf G?
Wo beziehe ich mich auf G?
16.12.2020 08:46:02
RPP63
R5C7 ist Row5Column7
Column7 ist G
R5C7 ist $G$5
AW: Wo beziehe ich mich auf G?
16.12.2020 08:57:17
harald
Oh danke für die Nachhilfe, wusste ich nicht :)
Wenn meine Tabelle in A1:A130 in Reiter Tabelle steht. Wie muss ich das "RefersTo anpassen?
Momentan sieht das so aus:
ActiveWorkbook.Names.Add Name:="FreieTage", RefersToR1C1:= _
"=Kalender!R1C1:R130C1"

Anzeige
Korrekt!
16.12.2020 09:00:13
RPP63
Aber beachte meinen Hinweis, dass die Wochenenden in der Liste überflüssig sind!
Schließlich ermittelt diese Workday() aka ARBEITSTAG() selbständig.
AW: Korrekt!
16.12.2020 09:07:39
harald
Habe ich so durchgeführt und auch die ganzen WE herausgeschmissen.
Leider beachtet er beispielsweise meinen 24.12 nicht als Feiertag...
Muss ich auch den Begriff " RefersToR1C1:" verändern?
Ich muss leider weg
16.12.2020 09:19:41
RPP63
Falls Dir zeitnah keiner hilft, dann lade in der Zwischenzeit mal Deine Datei hoch, denn imo müsste es funktionieren.
AW: Korrekt!
16.12.2020 09:37:06
Herbert_Grom
Hallo Harald,
wie Ralf schon empfahl: Lade eine BSP-Datei hoch!
Servus
AW: Korrekt!
16.12.2020 11:57:26
fcs
Hallo Harald,
mit meinen Beispieldaten kommt als Ergebnis der 29.12.2020 raus
Beispiel für FreieTage:
Makro wenn Arbeitsmappe eins.xlsm die aktive Arbeitsmappe ist.
Sub Übertrag_Wochentag()
Dim wb As Workbook
Set wb = Workbooks("eins.xlsm")
Application.ScreenUpdating = False
With wb
.Names.Add Name:="FreieTage", RefersToR1C1:="='Tabellenblatt 1'!R1C1:R130C1"
With .Worksheets("blatt2").Range("A9")
.FormulaR1C1 = "=WORKDAY(TODAY(),4, FreieTage)"
.Calculate
.Value = .Value 'Zeile löschen, wenn die Formel in der Zelle stehen soll
End With
MsgBox "Tageseinlastung übertragen für: " & .Sheets("blatt2").Range("C9") & " " & .Sheets( _
"blatt2").Range("A9").Text
End With
Application.ScreenUpdating = True
End Sub
Makro, wenn die aktive Arbeitsmappe mit Liste der freien Tage eine anderen Arbeistmappe ist:
'aktive Arbeitsmappe ist verschieden von "eins.xlsm
Sub Übertrag_Wochentag()
Dim wb As Workbook
Dim wbAktiv As Workbook
Set wb = Workbooks("eins.xlsm")
Application.ScreenUpdating = False
Set wbAktiv = ActiveWorkbook
wbAktiv.Names.Add Name:="FreieTage", RefersToR1C1:="='Tabellenblatt 1'!R1C1:R130C1"
With Workbooks("eins.xlsm")
With .Worksheets("blatt2").Range("A9")
.FormulaR1C1 = "=WORKDAY(TODAY(),4," & "'" & wbAktiv.Name & "'!" & "FreieTage)"
.Calculate
.Value = .Value 'Zeile löschen, wenn die Formel in der Zelle stehen soll
End With
MsgBox "Tageseinlastung übertragen für: " & .Sheets("blatt2").Range("C9") & " " _
& .Sheets("blatt2").Range("A9").Text
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Korrekt!
16.12.2020 10:55:54
harald
Hallo,
war an der Erstellung einer Beispiel-Datei. Dort klappt es seltsamerweise. In meiner Originalen nicht. Gehe selbst auf die Suche.
Danke!

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige