Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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

danke sieht toll aus.

Wie sieht jetzt die Funktion aus im Bezug auf Übertragen der Stunden eines Tages (welche Zelle muss ich markieren um dann Makro Überstunden speichern auszuführen) aus. Tue mir schwer dies im Makro auszulesen :17: Sorry.

Ach ja die Funktion dass die ZK Automatisch als neues ABl. gespeichert wird, würde ich dich bitten diese Funktion zu deaktivieren (--) das es im Makro aber erhalten/lesbar bleibt und ich bei Bedarf diese wieder aktivieren kann.  

Danke Holger


Wow wenn dass funktioniert würde ich dich gerne umarmen und Danke sagen!!
Antworten Top
#22
Hallo,


1. Set rng = Union(wksQ.Range("D16:D31"), wksQ.Range("N16:N30"))
2. Vor all diese Zeilen ein Hochkomma setzen:


Code:
For Blatt = 1 To Sheets.Count
        If Sheets(Blatt).Name = strArchiv Then IstDa = True
    Next
    If Not IstDa Then
        wksQ.Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "Stunden_" & Format(.Range("P10") * 29, "MMM")
        With Sheets(Sheets.Count).UsedRange
            .Value = .Value
        End With
    Else
        .Range("B16:U31").Copy
        Sheets(Sheets.Count).Range("B16").PasteSpecial xlPasteValues
    End If
        With Sheets(Sheets.Count).UsedRange
            .Value = .Value
        End With
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#23
Hallo Edgar,

WOW WOW WOW, funktioniert bis auf einen kleinen Fehler super!!!
Bei den Überstunden beginnt er beim Eintragen bei der Spalte B6 statt B7 wodurch vermutlich auch die Formatierung nicht stimmt und auch am Ende nicht die Std zusammengerechnet werden.

Kannst du diese noch ändern, dass er mit Befüllung erst bei B7 anfängt und nochmal hier veröffentlichen?
[
Bild bitte so als Datei hochladen: Klick mich!
]

Danke
Antworten Top
#24
Hallo,

das Makro trägt in der ersten leeren Zeile ein. Warum das ein Problem beim Format sein soll, verstehe ich nicht. Deine Formel fängt allerdings erst in Zeile 7 an zu rechnen.


Code:
loletzte = Application.Max(wksZ.Cells(Rows.Count, 2).End(xlUp).Row + 1, 7)

Und jetzt befasse Dich mal mit VBA! Lasse den Code im Einzelschritt-Modus laufen, dann kannst Du nachvollziehen, was er macht.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#25
(23.03.2016, 14:06)BoskoBiati schrieb: Hallo,

das Makro trägt in der ersten leeren Zeile ein. Warum das ein Problem beim Format sein soll, verstehe ich nicht. Deine Formel fängt allerdings erst in Zeile 7 an zu rechnen.


Code:
loletzte = Application.Max(wksZ.Cells(Rows.Count, 2).End(xlUp).Row + 1, 7)

Und jetzt befasse Dich mal mit VBA! Lasse den Code im Einzelschritt-Modus laufen, dann kannst Du nachvollziehen, was er macht.

Hallo Edgar,

habe es schon gelöst! Danke
Ja ich werde mir den VBA zu Gemüte führen ::) und die einzelnen Schritte nachverfolgen!!

Abschließend bleibt mir nur mehr DANKE zu sagen, für deine Hilfe und die aufgewendete Zeit.
Du hast mir dadurch sehr weiter geholfen u. stehe quasi in deiner Schuld.

Danke Danke
Erika

PS: Ich hoffe ich darf mich wieder einmal an dich wenden wenn ich Fragen habe, welche hoffentlich nicht so umfangreich sind!!
Antworten Top
#26
Hallo Edgar,

habe eine Frage da zu VBA da ich einen Wert nicht finden kann!

Für 80 Prozent der Mitarbeiter passt diese ZK super, jedoch haben wir auch MA die 41Std arbeiten und daher Montag u. Dienstag erst von 16:30 Überstunden schreiben können.
Deshalb habe ich zweite Schaltfläche gemacht und die Werte zu ändern versucht (kopiertes Makro) auf 16:30.
Für die Darstellung in der ZK klappt es super nur beim Übertrag nimmt er noch immer 16:00.

 rngAktiv.Offset(0, 2) = "16:30"

Wo muss ich hier noch den Eintrag im Makro ändern damit auch bei Beginn Überstunde 16:30 übertragen wird?

Code:
Sub Stunden_speichern()
Dim loletzte As Long
Dim loSp As Long
Dim loZe As Long
Dim IstDa As Boolean
Dim rngAktiv As Range
Dim rng As Range
Dim rng2 As Range
Dim Blatt As Long
Dim strArchiv As String
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Set wksQ = Sheets("ZK")
Set wksZ = Sheets("MDL")
IstDa = False
Set rng = Union(wksQ.Range("D16:D31"), wksQ.Range("N16:N30"))
loletzte = wksZ.Cells(Rows.Count, 2).End(xlUp).Row + 1
Set rngAktiv = ActiveCell
If rngAktiv.Count > 1 Then Exit Sub
If Application.Intersect(rngAktiv, rng) Is Nothing Then Exit Sub
If Not wksZ.Columns(2).Find(rngAktiv.Offset(0, -1).Value + 2 / 3) Is Nothing Then
    MsgBox "Der Wert wurden bereits gespeichert!", vbOKOnly, "Achtung"
    Exit Sub
End If
Application.ScreenUpdating = False
With wksQ
                wksZ.Cells(loletzte, 2) = rngAktiv.Offset(0, -1) + 2 / 3
                wksZ.Cells(loletzte, 4) = rngAktiv.Offset(0, -1) + rngAktiv.Offset(0, 2)
                wksZ.Cells(loletzte, 6) = Format((rngAktiv.Offset(0, 4) + rngAktiv.Offset(0, 5) / 60) / 24, "hh:mm")
                strArchiv = "Stunden_" & Format(.Range("P10") * 29, "MMM")
                rngAktiv.Offset(0, 2) = "16:30"
                Debug.Print strArchiv
    For Blatt = 1 To Sheets.Count
        If Sheets(Blatt).Name = strArchiv Then IstDa = True
    Next
    If Not IstDa Then
        wksQ.Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "Stunden_" & Format(.Range("P10") * 29, "MMM")
        With Sheets(Sheets.Count).UsedRange
            .Value = .Value
        End With
    Else
        .Range("B16:U31").Copy
        Sheets(Sheets.Count).Range("B16").PasteSpecial xlPasteValues
    End If
        With Sheets(Sheets.Count).UsedRange
            .Value = .Value
        End With
End With
Application.ScreenUpdating = True
End Sub

Danke und nochmal Sorry dass ich dich schon wieder belästige!!

Erika

PS: auch sollen die Mitarbeiter durch einen andere Schaltfläche die Möglichkeit bekommen von frühestens 06:00 bis max 08:00 (z.B. 06:30-08:00; 06:45-08:00; 07:30-08:00 Überstunden schreiben zu können.
kann ich dieses auch mit deinem Makro umsetzen?
Antworten Top
#27
Hallo,

diese Zeile:


Code:
wksZ.Cells(loletzte, 2) = rngAktiv.Offset(0, -1) + 2 / 3


ersetzen durch diese:


Code:
wksZ.Cells(loletzte, 2) = rngAktiv.Offset(0, -1) +33/48
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
Antworten Top
#28
Super funktioniert!!
Oh Mann o Mann wenn ich dich nicht hätte!

Das mit den Überstunden in der früh sollte auch so funktionieren wenn ich dein Makro kopiere und Spalten sowie Werte ersetze oder?


Danke Erika

Angel


Zitat:Hallo,

diese Zeile:
Code:
wksZ.Cells(loletzte, 2) = rngAktiv.Offset(0, -1) + 2 / 3

ersetzen durch diese:
Code:
wksZ.Cells(loletzte, 2) = rngAktiv.Offset(0, -1) +33/48
Antworten Top
#29
Hallo,



Zitat:Das mit den Überstunden in der früh sollte auch so funktionieren

nein! Ich ahnte es, dass es sowas auch gibt. Da muß das ganze Makro anders aufgebaut werden.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#30
(24.03.2016, 08:49)BoskoBiati schrieb: nein! Ich ahnte es, dass es sowas auch gibt. Da muß das ganze Makro anders aufgebaut werden.

Hallo Edgar,

Sorry, sorry! Also wenn ich jetzt nur Einträge mache von 16:00 oder 16:30 bis Ende funktioniert es tadellos. Doch sobald ich einen Wert in der Früh auch dazu gebe, wird dieser mitgerechnet. Deshalb will ich ja zu den bereits zwei Schaltflächen eine dritte die nur die Zeiten von 06:00 - 08:00 sofern erwünscht als Überstunde überträgt
Zusammengefasst:
1 Schaltfläche von 16:00 - Ende Überstunde  
2 Schaltfläche von 16:30 - Ende Überstunde
3 Schaltfläche von 06:00 - 08:00 (ab 06:00 ist Überstunde möglich bis max. 08:00)

Tut mir leid ich dachte es funktioniert einfach mit dem kopieren des Makros und Werte ändern.
Wusste nicht dass es sich auf die Anfangsuhrzeit auch bezieht.
Hoffe es gibt eine Lösung dafür und du bist ein letztes mal in dieser Sache motiviert?

Vielen Dank im Voraus Erika
Antworten Top


Gehe zu:


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