Arbeitszeit berechnen

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

Schokoscherzkeks
Posts: 23
Joined: 15 Jan 2015, 03:45

Arbeitszeit berechnen

02 Feb 2015, 11:33

Hab mal ein kleines Programm geschrieben zum Berechnen von Arbeitszeiten. Es gibt bestimmt eine kürzere Lösung, aber es tut was es tun soll und auch die Zeiten lassen sich einfach ändern. Danke auch an garry, der mir ein paar kleine Fehler verbessert hat.

Code: Select all

#SingleInstance, Force
SetFormat, Float, 0.2
Gui, Add, Text, x2 y0 w110 h20 , Stundenrechner
Gui, Add, Text, x42 y20 w70 h20 , Montag
Gui, Add, Text, x112 y20 w70 h20 , Dienstag
Gui, Add, Text, x182 y20 w70 h20 , Mittwoch
Gui, Add, Text, x252 y20 w70 h20 , Donnerstag
Gui, Add, Text, x322 y20 w70 h20 , Freitag
Gui, Add, Text, x392 y20 w70 h20 , Samstag
Gui, Add, Text, x462 y20 w70 h20 , Sonntag
Gui, Add, Text, x2 y40 w40 h20 , Früh
Gui, Add, Text, x2 y60 w40 h20 , Pause
Gui, Add, Text, x2 y90 w40 h20 , Spät
Gui, Add, Text, x2 y110 w40 h20 , Pause
Gui, Add, Text, x2 y140 w40 h20 , Nacht
Gui, Add, Text, x2 y160 w40 h20 , Pause
Gui, Add, CheckBox, x62 y40 w20 h20 vMontagFruh , 
Gui, Add, CheckBox, x42 y60 w20 h20 vMontagFruhPause15,
Gui, Add, CheckBox, x62 y60 w20 h20 vMontagFruhPause30,
Gui, Add, CheckBox, x62 y90 w20 h20 vMontagSpat,
Gui, Add, CheckBox, x62 y110 w20 h20 vMontagSpatPause30,
Gui, Add, CheckBox, x62 y140 w20 h20 vMontagNacht,
Gui, Add, CheckBox, x62 y160 w20 h20 vMontagNachtPause30,
Gui, Add, CheckBox, x122 y40 w20 h20 vDienstagFruh,
Gui, Add, CheckBox, x192 y40 w20 h20 vMittwochFruh,
Gui, Add, CheckBox, x272 y40 w20 h20 vDonnerstagFruh,
Gui, Add, CheckBox, x332 y40 w20 h20 vFreitagFruh,
Gui, Add, CheckBox, x402 y40 w20 h20 vSamstagFruh,
Gui, Add, CheckBox, x472 y40 w20 h20 vSonntagFruh,
Gui, Add, CheckBox, x122 y60 w20 h20 vDienstagFruhPause30,
Gui, Add, CheckBox, x102 y60 w20 h20 vDienstagFruhPause15,
Gui, Add, CheckBox, x192 y60 w20 h20 vMittwochFruhPause30,
Gui, Add, CheckBox, x172 y60 w20 h20 vMittwochFruhPause15,
Gui, Add, CheckBox, x272 y60 w20 h20 vDonnerstagFruhPause30,
Gui, Add, CheckBox, x252 y60 w20 h20 vDonnerstagFruhPause15,
Gui, Add, CheckBox, x332 y60 w20 h20 vFreitagFruhPause30,
Gui, Add, CheckBox, x312 y60 w20 h20 vFreitagFruhPause15,
Gui, Add, CheckBox, x402 y60 w20 h20 vSamstagFruhPause30,
Gui, Add, CheckBox, x382 y60 w20 h20 vSamstagFruhPause15,
Gui, Add, CheckBox, x472 y60 w20 h20 vSonntagFruhPause30,
Gui, Add, CheckBox, x452 y60 w20 h20 vSonntagFruhPause15,
Gui, Add, CheckBox, x122 y90 w20 h20 vDienstagSpat,
Gui, Add, CheckBox, x122 y110 w20 h20 vDienstagSpatPause30,
Gui, Add, CheckBox, x122 y140 w20 h20 vDienstagNacht,
Gui, Add, CheckBox, x122 y160 w20 h20 vDienstagNachtPause30,
Gui, Add, CheckBox, x192 y90 w20 h20 vMittwochSpat,
Gui, Add, CheckBox, x192 y110 w20 h20 vMittwochSpatPause30,
Gui, Add, CheckBox, x192 y140 w20 h20 vMittwochNacht,
Gui, Add, CheckBox, x192 y160 w20 h20 vMittwochNachtPause30,
Gui, Add, CheckBox, x272 y90 w20 h20 vDonnerstagSpat,
Gui, Add, CheckBox, x272 y110 w20 h20 vDonnerstagSpatPause30,
Gui, Add, CheckBox, x272 y140 w20 h20 vDonnerstagNacht,
Gui, Add, CheckBox, x272 y160 w20 h20 vDonnerstagNachtPause30,
Gui, Add, CheckBox, x332 y90 w20 h20 vFreitagSpat,
Gui, Add, CheckBox, x332 y110 w20 h20 vFreitagSpatPause30,
Gui, Add, CheckBox, x332 y140 w20 h20 vFreitagNacht,
Gui, Add, CheckBox, x332 y160 w20 h20 vFreitagNachtPause30,
Gui, Add, CheckBox, x402 y90 w20 h20 vSamstagSpat,
Gui, Add, CheckBox, x402 y110 w20 h20 vSamstagSpatPause30,
Gui, Add, CheckBox, x402 y140 w20 h20 vSamstagNacht,
Gui, Add, CheckBox, x402 y160 w20 h20 vSamstagNachtPause30,
Gui, Add, Checkbox, x402 y210 w100 h20 vSamstagkurz, kurzer Samstag
Gui, Add, CheckBox, x472 y90 w20 h20 vSonntagSpat,
Gui, Add, CheckBox, x472 y110 w20 h20 vSonntagSpatPause30,
Gui, Add, CheckBox, x472 y140 w20 h20 vSonntagNacht,
Gui, Add, CheckBox, x472 y160 w20 h20 vSonntagNachtPause30,
Gui, Add, Text, x2 y190 w40 h20 , Tag
Gui, Add, CheckBox, x62 y190 w20 h20 vMontagTag,
Gui, Add, CheckBox, x122 y190 w20 h20 vDienstagTag,
Gui, Add, CheckBox, x192 y190 w20 h20 vMittwochTag,
Gui, Add, CheckBox, x272 y190 w20 h20 vDonnerstagTag,
Gui, Add, CheckBox, x332 y190 w20 h20 vFreitagTag,
Gui, Add, CheckBox, x402 y190 w20 h20 vSamstagTag,
Gui, Add, CheckBox, x472 y190 w20 h20 vSonntagTag,
Gui, Add, Text, x82 y250 w120 h20 , Anzahl Wochenstunden:
Gui, Add, Text, w130 h19 x82 y270 , Zusatzliche Stunden +/-
Gui, Add, Edit, w30 h19 x200 y270 vZusatz,
Gui, Add, Button, x300 y250 w90 h20 gberechnen, Berechnen
Gui, Add, Button, x300 y270 w90 h20 gbeenden, Beenden
Gui, Add, Text, x202 y250 w90 h20 Left vErgebnis1,
Gui, Show, w520 h330, Stundenrechner
return
berechnen:
Gui, Submit, NoHide
;~ --------------------Montag------------------
If MontagFruh = 1
	MontagFruh = 8.25
If MontagFruhPause15 = 1
	MontagFruhPause15 = 0.25
If MontagFruhPause30 = 1
	MontagFruhPause30 = 0.5
If MontagSpat = 1
	MontagSpat = 8.25
If MontagSpatPause30 = 1
	MontagSpatPause30 = 0.5
If MontagNacht = 1
	MontagNacht = 7.5
If MontagNachtPause30 = 1
	MontagNachtPause30 = 0.5
If MontagTag = 1
	MontagTag = 8.75
;~ ------------------------Dienstag------------------------
If DienstagFruh = 1
	DienstagFruh = 8.25
If DienstagFruhPause15 = 1
	DienstagFruhPause15 = 0.25
If DienstagFruhPause30 = 1
	DienstagFruhPause30 = 0.5
If DienstagSpat = 1
	DienstagSpat = 8.25
If DienstagSpatPause30 = 1
	vDienstagSpatPause30 = 0.5
If DienstagNacht = 1
	DienstagNacht = 7.5
If DienstagNachtPause30 = 1
	DienstagNachtPause30 = 0.5
If DienstagTag = 1
	DienstagTag = 8.75
;~ -------------------Mittwoch--------------
If MittwochFruh = 1
	MittwochFruh = 8.25
If MittwochFruhPause15 = 1
	MittwochFruhPause15 = 0.25
If MittwochFruhPause30 = 1
	MittwochFruhPause30 = 0.5
If MittwochSpat = 1
	MittwochSpat = 8.25
If MittwochSpatPause30 = 1
	vMittwochSpatPause30 = 0.5
If MittwochNacht = 1
	MittwochNacht = 7.5
If MittwochNachtPause30 = 1
	MittwochNachtPause30 = 0.5
If MittwochTag = 1
	MittwochTag = 8.75
;~ -----------------------Donnerstag--------------
If DonnerstagFruh = 1
	DonnerstagFruh = 8.25
If DonnerstagFruhPause15 = 1
	DonnerstagFruhPause15 = 0.25
If DonnerstagFruhPause30 = 1
	DonnerstagFruhPause30 = 0.5
If DonnerstagSpat = 1
	DonnerstagSpat = 8.25
If DonnerstagSpatPause30 = 1
	vDonnerstagSpatPause30 = 0.5
If DonnerstagNacht = 1
	DonnerstagNacht = 7.5
If DonnerstagNachtPause30 = 1
	DonnerstagNachtPause30 = 0.5
If DonnerstagTag = 1
	DonnerstagTag = 8.75
;~ ------------------------Freitag--------------
If FreitagFruh = 1
	FreitagFruh = 7.75
If FreitagFruhPause15 = 1
	FreitagFruhPause15 = 0.25
If FreitagFruhPause30 = 1
	FreitagFruhPause30 = 0.5
If FreitagSpat = 1
	FreitagSpat = 7.75
If FreitagSpatPause30 = 1
	vFreitagSpatPause30 = 0.5
If FreitagNacht = 1
	FreitagNacht = 7.5
If FreitagNachtPause30 = 1
	FreitagNachtPause30 = 0.5
If FreitagTag = 1
	FreitagTag = 8.25
;~ -----------------Samstag---------------
If SamstagFruh = 1
	SamstagFruh = 8.25
If SamstagFruhPause15 = 1
	SamstagFruhPause15 = 0.25
If SamstagFruhPause30 = 1
	SamstagFruhPause30 = 0.5
If SamstagSpat = 1
	SamstagSpat = 8.25
If SamstagSpatPause30 = 1
	vSamstagSpatPause30 = 0.5
If SamstagNacht = 1
	SamstagNacht = 7.5
If SamstagNachtPause30 = 1
	SamstagNachtPause30 = 0.5
If SamstagTag = 1
	SamstagTag = 8.75
if Samstagkurz = 1
	Samstagkurz = 5
If Zusatz =
	Zusatz = 0
;~ ------------------Sonntag-------------------
If SonntagFruh = 1
	SonntagFruh = 8.25
If SonntagFruhPause15 = 1
	SonntagFruhPause15 = 0.25
If SonntagFruhPause30 = 1
	SonntagFruhPause30 = 0.5
If SonntagSpat = 1
	SonntagSpat = 8.25
If SonntagSpatPause30 = 1
	vSonntagSpatPause30 = 0.5
If SonntagNacht = 1
	SonntagNacht = 7.5
If SonntagNachtPause30 = 1
	SonntagNachtPause30 = 0.5
If SonntagTag = 1
	SonntagTag = 8.75
;~ ---------------------------------------------
Ergebnis := (MontagFruh-MontagFruhPause15-MontagFruhPause30+MontagSpat-MontagSpatPause30+MontagNacht-MontagNachtPause30+MontagTag)+(DienstagFruh-DienstagFruhPause15-DienstagFruhPause30+DienstagSpat-DienstagSpatPause30+DienstagNacht-DienstagNachtPause30+DienstagTag)+(MittwochFruh-MittwochFruhPause15-MittwochFruhPause30+MittwochSpat-MittwochSpatPause30+MittwochNacht-MittwochNachtPause30+MittwochTag)+(DonnerstagFruh-DonnerstagFruhPause15-DonnerstagFruhPause30+DonnerstagSpat-DonnerstagSpatPause30+DonnerstagNacht-DonnerstagNachtPause30+DonnerstagTag)+(FreitagFruh-FreitagFruhPause15-FreitagFruhPause30+FreitagSpat-FreitagSpatPause30+FreitagNacht-FreitagNachtPause30+FreitagTag)+(SamstagFruh-SamstagFruhPause15-SamstagFruhPause30+SamstagSpat-SamstagSpatPause30+SamstagNacht-SamstagNachtPause30+SamstagTag+Samstagkurz)+(SonntagFruh-SonntagFruhPause15-SonntagFruhPause30+SonntagSpat-SonntagSpatPause30+SonntagNacht-SonntagNachtPause30+SonntagTag)+(Zusatz)
GuiControl,1:,Ergebnis1,%Ergebnis%
return

Beenden:
GuiClose:
ExitApp
www.Laserkunst.eu
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Arbeitszeit berechnen

03 Feb 2015, 03:12

Moin,

ich verstehe das mit den Checkboxen nicht so richtig. "Früh", "Spät", "Nacht" hört sich für mich wie Schichtbetrieb an. Dann scheint es auch noch eine Tagesarbeitszeit ohne Schicht zu geben. Die sollten sich doch gegenseitig ausschließen, und dafür nimmt man normalerweise Radios. Oder ist das bei Euch anders?
Schokoscherzkeks
Posts: 23
Joined: 15 Jan 2015, 03:45

Re: Arbeitszeit berechnen

03 Feb 2015, 09:26

Hi,
richtig, es geht um Schichtbetrieb. Meistens arbeiten wir in 2 Schichten, manchmal aber auch in drei oder eben nur Tagschicht. Wie schon geschrieben, gibt es mit Sicherheit bessere Lösungen. Ich finde die Checkbox einfach schöner ;-) Dass das eine das andere ausschließt ist natürlich logisch. Ich wollte jetzt nicht ein idiotensicheres Programm schreiben. Es soll ja nur eine kleine Hilfe sein. Wir fangen manchmal mitten in der Woche mit Nachtschicht an, arbeiten ab und zu mal Pausen durch und da ist dann so eine kleine Rechenhilfe doch ganz praktisch. Du kannst natürlich gerne das Programm umschreiben und/oder ein anderes posten.
Last edited by Schokoscherzkeks on 03 Feb 2015, 10:07, edited 1 time in total.
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Arbeitszeit berechnen

03 Feb 2015, 09:50

Den Berechnungspart könntest du so lösen oder noch weiter umschreiben und mit arrays arbeiten

Code: Select all

Berechnen:
Gui, Submit, NoHide

; --- MONTAG ------------------------------------------------------------------------------------------------
MoFrueh    := MoFrueh    ? 8.25 : 0
MoFruehP15 := MoFruehP15 ? 0.25 : 0
MoFruehP30 := MoFruehP30 ? 0.50 : 0
MoSpaet    := MoSpaet    ? 8.25 : 0
MoSpaetP30 := MoSpaetP30 ? 0.50 : 0
MoNacht    := MoNacht    ? 7.50 : 0
MoNachtP30 := MoNachtP30 ? 0.50 : 0
MoTag      := MoTag      ? 8.75 : 0

Montag     := (MoFrueh - MoFruehP15 - MoFruehP30) + (MoSpaet - MoSpaetP30) + (MoNacht - MoNachtP30) + (MoTag)

; --- DIENSTAG ----------------------------------------------------------------------------------------------
DiFrueh    := DiFrueh    ? 8.25 : 0
DiFruehP15 := DiFruehP15 ? 0.25 : 0
DiFruehP30 := DiFruehP30 ? 0.50 : 0
DiSpaet    := DiSpaet    ? 8.25 : 0
DiSpaetP30 := DiSpaetP30 ? 0.50 : 0
DiNacht    := DiNacht    ? 7.50 : 0
DiNachtP30 := DiNachtP30 ? 0.50 : 0
DiTag      := DiTag      ? 8.75 : 0

Dienstag   := (DiFrueh - DiFruehP15 - DiFruehP30) + (DiSpaet - DiSpaetP30) + (DiNacht - DiNachtP30) + (DiTag)

; --- MITTWOCH ----------------------------------------------------------------------------------------------
MiFrueh    := MiFrueh    ? 8.25 : 0
MiFruehP15 := MiFruehP15 ? 0.25 : 0
MiFruehP30 := MiFruehP30 ? 0.50 : 0
MiSpaet    := MiSpaet    ? 8.25 : 0
MiSpaetP30 := MiSpaetP30 ? 0.50 : 0
MiNacht    := MiNacht    ? 7.50 : 0
MiNachtP30 := MiNachtP30 ? 0.50 : 0
MiTag      := MiTag      ? 8.75 : 0

Mittwoch   := (MiFrueh - MiFruehP15 - MiFruehP30) + (MiSpaet - MiSpaetP30) + (MiNacht - MiNachtP30) + (MiTag)

; --- DONNERSTAG --------------------------------------------------------------------------------------------
DoFrueh    := DoFrueh    ? 8.25 : 0
DoFruehP15 := DoFruehP15 ? 0.25 : 0
DoFruehP30 := DoFruehP30 ? 0.50 : 0
DoSpaet    := DoSpaet    ? 8.25 : 0
DoSpaetP30 := DoSpaetP30 ? 0.50 : 0
DoNacht    := DoNacht    ? 7.50 : 0
DoNachtP30 := DoNachtP30 ? 0.50 : 0
DoTag      := DoTag      ? 8.75 : 0

Donnerstag := (DoFrueh - DoFruehP15 - DoFruehP30) + (DoSpaet - DoSpaetP30) + (DoNacht - DoNachtP30) + (DoTag)

; --- FREITAG -----------------------------------------------------------------------------------------------
FrFrueh    := FrFrueh    ? 8.25 : 0
FrFruehP15 := FrFruehP15 ? 0.25 : 0
FrFruehP30 := FrFruehP30 ? 0.50 : 0
FrSpaet    := FrSpaet    ? 8.25 : 0
FrSpaetP30 := FrSpaetP30 ? 0.50 : 0
FrNacht    := FrNacht    ? 7.50 : 0
FrNachtP30 := FrNachtP30 ? 0.50 : 0
FrTag      := FrTag      ? 8.75 : 0

Freitag    := (FrFrueh - FrFruehP15 - FrFruehP30) + (FrSpaet - FrSpaetP30) + (FrNacht - FrNachtP30) + (FrTag)

; --- SAMSTAG -----------------------------------------------------------------------------------------------
SaFrueh    := SaFrueh    ? 8.25 : 0
SaFruehP15 := SaFruehP15 ? 0.25 : 0
SaFruehP30 := SaFruehP30 ? 0.50 : 0
SaSpaet    := SaSpaet    ? 8.25 : 0
SaSpaetP30 := SaSpaetP30 ? 0.50 : 0
SaNacht    := SaNacht    ? 7.50 : 0
SaNachtP30 := FrNachtP30 ? 0.50 : 0
SaTag      := FrTag      ? 8.75 : 0
SaTagKurz  := SaTagKurz  ? 5.00 : 0

Samstag    := (SaFrueh - SaFruehP15 - SaFruehP30) + (SaSpaet - SaSpaetP30) + (SaNacht - SaNachtP30) + (SaTag) + (SaTagKurz)

; --- SONNTAG -----------------------------------------------------------------------------------------------
SoFrueh    := SoFrueh    ? 8.25 : 0
SoFruehP15 := SoFruehP15 ? 0.25 : 0
SoFruehP30 := SoFruehP30 ? 0.50 : 0
SoSpaet    := SoSpaet    ? 8.25 : 0
SoSpaetP30 := SoSpaetP30 ? 0.50 : 0
SoNacht    := SoNacht    ? 7.50 : 0
SoNachtP30 := SoNachtP30 ? 0.50 : 0
SoTag      := SoTag      ? 8.75 : 0

Sonntag    := (SoFrueh - SoFruehP15 - SoFruehP30) + (SoSpaet - SoSpaetP30) + (SoNacht - SoNachtP30) + (SoTag)

; --- WOCHENERGEBNIS ----------------------------------------------------------------------------------------
Zusatz     := Zusatz     ? 0.00 : 0
Woche      := Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + Sonntag + Zusatz

GuiControl,, Ergebnis1, % Woche
return
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 39 guests