Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Arbeitszeiten eintragen

Forumthread: Arbeitszeiten eintragen

Arbeitszeiten eintragen
14.04.2024 14:18:02
matthias
Hallo allerseits,
ich bin neu hier und versuche gerade die Arbeitszeiten per Makro einzutragen.
Ich habe die Datei von einem Kollegen erhalten, blicke allerdings nicht so perfekt durch.
Vielleicht hat jemand "Lust" mich zu unterstützen, wenn ja,
danke im Voraus
https://www.herber.de/bbs/user/168711.xlsm
mfg matthias
Anzeige

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitszeiten eintragen
14.04.2024 14:29:39
Onur
Unterstützen? Wobei denn genau?
Arbeitszeiten eintragen? WELCHE denn? Wieso per Makro? Die trägt man doch am Ende des Tages manuell ein.
AW: Arbeitszeiten eintragen
15.04.2024 10:19:05
Holger
Hallo Matthias,

der Funktion des Kalender, wie bekommt man das hin, das ist ja mal richtig mega.

Gruß

Holger
AW: Arbeitszeiten eintragen
15.04.2024 12:27:54
matthias
Hallo Holger,
habe deine Frage nicht verstanden ?
Die Experten im Forum haben das gemacht !!!

mfg matthias
Anzeige
Hallo Onur, ja aber...
14.04.2024 14:37:30
matthias
Guten Tag Onur,
Du hast RECHT aber ich würde gern die SOLL Arbeitsstunden per Makro eintragen.
Das Makro läuft nicht so einwandfrei.
Die Anfang und Endzeiten stehen in Zeile 2.
Montags nichts
Dienstags 9h
Mittwochs nichts
Donnerstags 9h
Freitags 9h
Samstags 6h
Gesamt-Soll 33h

mfg matthias

Anzeige
AW: Hallo Onur, ja aber...
14.04.2024 17:25:12
Alwin Weisangler
Hallo Matthias,

wo hast du denn diese Datei runtergeladen.
Die Datei ist defekt.
Ansonsten wäre für alle Monate nebst Feiertagen, die im Blatt "Feiertage" mit X gekennzeichnet sind ein möglicher Weg so:


Sub mw_Arbeitszeiten_eintragen()
Dim i&, j&, Feiertage$
With Tabelle13 ' Feiertage X erfassen
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If LCase(.Cells(i, 3)) = "x" Then
Feiertage = Feiertage & .Cells(i, 1) & "###"
End If
Next i
End With
For i = 1 To 12
With Sheets(i)
For j = 9 To 39
If WorksheetFunction.Weekday(CDate(.Cells(j, 3))) 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Mo-Fr ohne Feiertage
.Cells(j, 5) = Format(.Cells(2, 17), "##:##")
.Cells(j, 6) = Format(.Cells(2, 18), "##:##")
End If
If WorksheetFunction.Weekday(CDate(.Cells(j, 3))) = 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Sa ohne Feiertge
.Cells(j, 5) = Format(.Cells(2, 17), "##:##")
.Cells(j, 6) = Format(.Cells(2, 19), "##:##")
End If
If InStr(1, Feiertage, .Cells(j, 3)) > 0 Then .Cells(j, 4) = "F"
Next j
End With
Next i
End Sub

Wichtig: Um es einfach zu halten, habe ich die Modulnamen sauber durchnummeriert. Tabelle1 =Januar bis Tabelle12 =Dezember (Februar bis April waren dafür verkehrt beziffert)
Also den Monat der richtigen Modulnummer des Tabellenblattes zuordnen.

Gruß Uwe

Anzeige
Habe ich gemacht...
14.04.2024 18:37:19
matthias
Guten Abend Uwe,
danke für deine Unterstützung !
Ich habe die Tabellen mit den richtigen Nummern versehen.
Das Makro gestartet, leider Fehlermeldung:
Laufzeitfehler 13 Typen unverträglich.
bleibt hier stehen:
If WorksheetFunction.Weekday(CDate(.Cells(j, 3)))  6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Mo-Fr ohne Feiertage


mfg matthias
Anzeige
AW: Habe ich gemacht...
14.04.2024 18:44:23
Onur
"Ich habe die Tabellen mit den richtigen Nummern versehen. " Dann solltest du diese neue Datei auch posten, sonst kann man sie nicht testen.
Hier die geänderte Datei
14.04.2024 18:49:00
matthias
Hallo zusammen,
hier das geänderte Muster.
https://www.herber.de/bbs/user/168715.xlsm
gruss matthias
Anzeige
AW: Hier die geänderte Datei
14.04.2024 18:53:20
Onur
Läuft doch einwandfrei durch.
Hier Info...
14.04.2024 19:39:20
matthias
Hallo Onur,
komisch bei mir hört das Makro nicht mehr auf zu laufen.
Sonntag werden Zahlen eingesetzt, bitte mal Hardkopie ansehen.
Userbild

gruss matthias
Anzeige
AW: Hier Info...
14.04.2024 19:40:50
Onur
Wie genau hast du das Makro denn gestartet?
Hallo Onur
14.04.2024 20:02:04
matthias
Hallo Onur,
ich habe das Makro mit dem Button: "Stunden eintragen"

mfg matthias
AW:
14.04.2024 20:07:13
Eifeljoi 5
Hallo

Auch bei mir läuft das Makro zum Stunden eintragen durch, allerdings werden nur bei Januar die Stunden eingetragen.

Ganz am Rande:
Ich könnte mir vorstellen das dies auch ohne VBA lösbar sein könnte mit PQ.
Anzeige
AW:
14.04.2024 20:12:30
Onur
WeekDay OHNE Returntype gibt Werte von 1 ((Sonntag) bis 7 (Samstag) aus.
DU brauchst aber von 1 (Montag) bis 7(Sonntag).
Also SO
WorksheetFunction.Weekday(CDate(.Cells(j, 3)),2) 


statt so:
WorksheetFunction.Weekday(CDate(.Cells(j, 3))) 
Anzeige
Habe Makro geändert
14.04.2024 20:18:18
matthias
Hallo zusammen,
habe Makro etwas geändert, wegen Stundenzahl Anfang und Ende.
Das einzige Problem es wird Sonntags schon angefangen die Zeiten einzutragen.

Per Formel würde ich nicht machen, da die Stunden ja noch auf alle Monate eingetragen werden müssen.
Und weil man evtl. per Eingabe verändern kann.
Userbild

mfg matthias
Anzeige
AW: Habe Makro geändert
14.04.2024 20:21:30
Onur
Habe dir schon um 20:12:30 geschrieben, was du ändern musst.
Entschuldigung Onur, habe übersehen, durch Fußball.
14.04.2024 20:25:47
matthias
Habe geändert aber Feiertage
14.04.2024 20:33:00
matthias
Hallo zusammen,
habe geändert aber die Feiertage werden nicht eingetragen und Berücksichtung,
da ja nicht gearbeitet wird.
Sub mw_Arbeitszeiten_eintragen()

Dim i&, j&, Feiertage$
With ActiveSheet ' Feiertage X erfassen
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If LCase(.Cells(i, 3)) = "x" Then
Feiertage = Feiertage & .Cells(i, 1) & "###"
End If
Next i
End With

For i = 1 To 12
With ActiveSheet 'Sheets(i)
For j = 9 To 39
If WorksheetFunction.Weekday(CDate(.Cells(j, 3)), 2) 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Mo-Fr ohne Feiertage
.Cells(j, 5) = Format(.Cells(2, 18), "##:##")
.Cells(j, 6) = Format(.Cells(2, 19), "##:##")
End If
If WorksheetFunction.Weekday(CDate(.Cells(j, 3)), 2) = 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Sa ohne Feiertge
.Cells(j, 5) = Format(.Cells(2, 18), "##:##")
.Cells(j, 6) = Format(.Cells(2, 20), "##:##")
End If
If InStr(1, Feiertage, .Cells(j, 3)) > 0 Then .Cells(j, 4) = "F"
Next j
End With
Next i
End Sub



mfg matthias
Anzeige
AW: Habe geändert aber Feiertage
14.04.2024 20:38:50
Onur
Blödsinn !
Der 1.1. ist ein MONTAG und wird NICHT eingetragen.
AW: Habe geändert aber Feiertage
14.04.2024 20:45:25
matthias
Hallo Onur,
wenn aber, wie im Mai viele Feiertagen sind, muss doch ein f eingetragen werden.
Ich möchte ja das Makro noch für alle Monate durchlaufen lassen.

Gruß Matthias
Hallo Onur Supi leider
14.04.2024 22:26:49
matthias
Guten Abend Onur,
perfekt wenn Jahr 2024.
Wähle ich ein anderes Jahr aus z.B. 2023, bleibt Makro hier stehen:
             

If WorksheetFunction.Weekday(CDate(.Cells(j, 3)), 2) 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Mo-Fr ohne Feiertage

Laufzeitfehler 13
Typen unverträglich
mfg matthias
Anzeige
AW: Hallo Onur Supi leider
14.04.2024 22:55:28
Alwin Weisangler
anbei eine neue Datei.
Einstellungen nur noch im Blatt "System" (Kalenderjahr ändern in B1).
Feiertage, Anfang und Ende eintragen via Button.
Es gibt keinen Monatsüberlauf mehr.
https://www.herber.de/bbs/user/168724.xlsm

Gruß Uwe
Anzeige
DANKE an ALLE, ich nehme die Datei von Onur. --
15.04.2024 09:19:20
matthias
Guten Morgen,
danke an ALLE die geholfen und Ideen hatten für meine komplizierte Datei.

mfg matthias
AW: Hallo Onur Supi leider
14.04.2024 23:03:34
Alwin Weisangler
Löschen der alten Werte fehlte noch:


Sub mw_Arbeitszeiten_eintragen()
Dim i&, j&, Feiertage$
With Tabelle13 ' Feiertage X erfassen
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If LCase(.Cells(i, 3)) = "x" Then
Feiertage = Feiertage & .Cells(i, 1) & "###"
End If
Next i
End With
For i = 1 To 12
With Sheets(i)
.Range("D9:F39").ClearContents
For j = 9 To 39
If .Cells(j, 2) = "" Then Exit For
If WorksheetFunction.Weekday(.Cells(j, 3), 2) 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Mo-Fr ohne Feiertage
.Cells(j, 5) = Format(Tabelle13.Cells(3, 7), "##:##")
.Cells(j, 6) = Format(Tabelle13.Cells(3, 8), "##:##")
End If
If WorksheetFunction.Weekday(.Cells(j, 3), 2) = 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Sa ohne Feiertge
.Cells(j, 5) = Format(Tabelle13.Cells(3, 7), "##:##")
.Cells(j, 6) = Format(Tabelle13.Cells(3, 9), "##:##")
End If
If InStr(1, Feiertage, .Cells(j, 3)) > 0 Then .Cells(j, 4) = "F"
Next j
End With
Next i
End Sub


Gruß Uwe
Anzeige
Und in Spalte ...
14.04.2024 18:41:33
matthias
Hallo Uwe,
hatte vergessen, in Spalte E wird immer 0:30 geschrieben und in Spalte F 8:30.
Kein Samstag aber leider fängt die Reihe zum einsetzen ab Sonntags an.

mfg matthias
AW: Und in Spalte ...
14.04.2024 20:42:09
Alwin Weisangler
Hallo miteinander,

ich habe euch eine ,2 unterschlagen - jetzt klingelts sicherlich.
richtig ist es so:


Sub mw_Arbeitszeiten_eintragen()
Dim i&, j&, Feiertage$
With Tabelle13 ' Feiertage X erfassen
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If LCase(.Cells(i, 3)) = "x" Then
Feiertage = Feiertage & .Cells(i, 1) & "###"
End If
Next i
End With
For i = 1 To 12
With Sheets(i)
For j = 9 To 39
If WorksheetFunction.Weekday(CDate(.Cells(j, 3)), 2) 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Mo-Fr ohne Feiertage
.Cells(j, 5) = Format(.Cells(2, 17), "##:##")
.Cells(j, 6) = Format(.Cells(2, 18), "##:##")
End If
If WorksheetFunction.Weekday(CDate(.Cells(j, 3)), 2) = 6 And InStr(1, Feiertage, .Cells(j, 3)) = 0 Then ' Sa ohne Feiertge
.Cells(j, 5) = Format(.Cells(2, 17), "##:##")
.Cells(j, 6) = Format(.Cells(2, 19), "##:##")
End If
If InStr(1, Feiertage, .Cells(j, 3)) > 0 Then .Cells(j, 4) = "F"
Next j
End With
Next i
End Sub

Aber die Datei bleibt trotzdem defekt, da die Schleife alle 12 Tabellenblätter durchläuft und in Spalte B auch brav das F für Feiertage erscheint nur eben in Spalte E und F bleiben die Zellen leer. Vermutlich im XML ist da was nicht mehr so, wie es sein soll.

Gruß Uwe




Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige