Registriert seit: 21.03.2016
Version(en): 2016
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!!
Registriert seit: 13.04.2014
Version(en): 365
23.03.2016, 13:33
(Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2016, 13:34 von BoskoBiati.)
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.
Registriert seit: 21.03.2016
Version(en): 2016
23.03.2016, 14:48
(Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2016, 14:48 von Erika.)
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
Registriert seit: 13.04.2014
Version(en): 365
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.
Registriert seit: 21.03.2016
Version(en): 2016
(23.03.2016, 15: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!!
Registriert seit: 21.03.2016
Version(en): 2016
24.03.2016, 08:42
(Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2016, 16:03 von Rabe.)
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?
Registriert seit: 13.04.2014
Version(en): 365
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:1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag 28
• Erika
Registriert seit: 21.03.2016
Version(en): 2016
24.03.2016, 09:19
(Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2016, 14:11 von Rabe.)
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 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
Registriert seit: 13.04.2014
Version(en): 365
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.
Registriert seit: 21.03.2016
Version(en): 2016
24.03.2016, 10:24
(Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2016, 14:11 von Rabe.
Bearbeitungsgrund: Zitat auf Relevantes reduziert
)
(24.03.2016, 09: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
|