Aktuell kann es Probleme bei der Anmeldung mit dem Chrome oder Edge Browser geben. Ihr müsstet in die Einstellungen des Browsers gehen und Cache, Cookies und sofern vorhanden, gespeicherte Passwörter vom CEF löschen oder alternativ auf einen anderen Browser ausweichen. Ursache sind vermutlich kürzliche Browserupdates. x

Überstunden von einem Arbeitsblatt in ein anderes übertragen
#51
Hallo,

wie wäre es, das Makro Step by Step durchlaufen zu lassen und zu prüfen, wann da 16:00 eingetragen wird und das dann auf 8:00Uhr zu ändern?? Sind genau 4Ziffern die geändert werden müssen!!!!

Habe gerade noch einen gravierenden Fehler gefunden und korrigiert:


Code:
Option Explicit

Sub Ueberstunden()
Dim loletzte As Long
Dim loZe As Long
Dim loa As Long
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Set wksQ = Sheets("ZK")
Set wksZ = Sheets("MDL")
loletzte = Application.Max(wksZ.Cells(Rows.Count, 2).End(xlUp).Row + 1, 7)
If wksQ.Range("P10") <> Month(Date) Then
    MsgBox "Falscher Monat!"
    Exit Sub
End If
Application.ScreenUpdating = False
With wksQ
    For loa = 16 To Application.Min(31, Day(Date) + 15)
        If (.Cells(loa, 4) < 1 / 3) And (.Cells(loa, 4) <> "") Then
            If MsgBox("Beginn am " & .Cells(loa, 2) & " vor 8:00Uhr. Als Überstunden speichern?", vbYesNo) = vbYes Then
                    wksZ.Cells(loletzte, 2) = .Cells(loa, 2)
                    wksZ.Cells(loletzte, 3) = .Cells(loa, 4)
                    wksZ.Cells(loletzte, 5) = .Cells(loa, 2)
                    wksZ.Cells(loletzte, 6) = 1 / 3
                    loletzte = loletzte + 1
                    .Cells(loa, 4) = 1 / 3
            End If
        End If
        If .Cells(loa, 6) > 2 / 3 Then
            If MsgBox("Ende am " & .Cells(loa, 2) & " nach 16:00Uhr. Als Überstunden speichern?", vbYesNo) = vbYes Then
                    wksZ.Cells(loletzte, 3) = 2 / 3
                    wksZ.Cells(loletzte, 2) = .Cells(loa, 2)
                    wksZ.Cells(loletzte, 5) = .Cells(loa, 2)
                    wksZ.Cells(loletzte, 6) = .Cells(loa, 6)
                    loletzte = loletzte + 1
                    .Cells(loa, 6) = 2 / 3
            End If
        End If
    Next
    If Day(Date) > 16 Then
        For loa = 16 To Application.Min(30, Day(Date) - 1)
            If (.Cells(loa, 14) < 1 / 3) And (.Cells(loa, 14) <> "") Then
                If MsgBox("Beginn am " & .Cells(loa, 12) & " vor 8:00Uhr. Als Überstunden speichern?", vbYesNo) = vbYes Then
                        wksZ.Cells(loletzte, 2) = .Cells(loa, 12)
                        wksZ.Cells(loletzte, 3) = .Cells(loa, 14)
                        wksZ.Cells(loletzte, 5) = .Cells(loa, 12)
                        wksZ.Cells(loletzte, 6) = 1 / 3
                        loletzte = loletzte + 1
                        .Cells(loa, 14) = 1 / 3
                End If
            End If
            If .Cells(loa, 16) > 2 / 3 Then
                If MsgBox("Beginn am " & .Cells(loa, 12) & " nach 16:00Uhr. Als Überstunden speichern?", vbYesNo) = vbYes Then
                        wksZ.Cells(loletzte, 2) = .Cells(loa, 12)
                        wksZ.Cells(loletzte, 3) = 2 / 3
                        wksZ.Cells(loletzte, 5) = .Cells(loa, 12)
                        wksZ.Cells(loletzte, 6) = .Cells(loa, 16)
                        loletzte = loletzte + 1
                        .Cells(loa, 16) = 2 / 3
                End If
            End If
        Next
    End If
End With
With wksZ
    For loa = 7 To loletzte - 1
        If .Cells(loa, 8) = "" Then .Cells(loa, 8) = Application.Max(0, 1 / 3 - .Cells(loa, 3)) + Application.Max(0, .Cells(loa, 6) - 2 / 3)
    Next
    .Range(.Cells(7, 2), .Cells(loletzte, 8)).Sort key1:=.Cells(7, 2), Order1:=xlAscending
End With
Application.ScreenUpdating = True
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Erika
Top
#52
Rainbow 
Hallo Edgar,

ja ist eine gute Idee und funktioniert für diesen Bereich der Frühstunden (jedoch fehlt noch die 0 (06:00, Buchhaltungsvorgabe leider))
Ist das für die Abendstunden auch möglich 16:00 - 22:00 (da Vorgabe)

[
Bild bitte so als Datei hochladen: Klick mich!
]

Welchen Fehler hast du noch gefunden?? Du weist ja bin Code-Nackertbazerl :) 

Danke Erika
Top
#53
Hallo,

übernimm den Code aus dem vorherigen Post, da müsste alles passen!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Erika
Top
#54
Hallo Edgar,
danke funktioniert echt super. Tausend Dank. Wo kann ich noch entsprechend den VBA-Code ändern damit bei den Frühstunden noch die 0 dazukommt??   Danke Erika
Top
#55
?????????????????????
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Erika
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste