11.09.2018, 10:45
Guten Morgen meine Excel Fans,
Ich habe eine wunderschöne Idee und somit eine Problem.
Aufgabe: Ich habe eine Arbeitszeittabelle
A B C D E F G H P Q
1 Name l Vorname l Gesetzt l Januar l Februar l März l Mai l Juni l... usw. l Überstunden l Anzahl halbe Tage
2 Name1
3 Name1
4 Name2
5 Name2
6 Name3
7 Name3
...
usw.
Nun soll in Zeile 2, für jeden Mitarbeiter die geleisteten Mehrstunden rein geschrieben werden ( z.B.: 35:00h ), das passiert ab "D2"
Alles über 35:00h sind Mehrstunden und müssen in den nächsten Monat übernommen werden.
Was soll passieren:
Bei Eingabe in "D2" z.B. 70:00:00 > ( Das ist was ich schon habe )
Zelle "Q2"
=WENN(D2>=ABS("35:00");1;0)+WENN(F2>=ABS("35:00");1;0)+WENN(H2>=ABS("35:00");1;0)+WENN(J2>=ABS("35:00");1;0)+WENN(L2>=ABS("35:00");1;0)+WENN(N2>=ABS("35:00");1;0)+WENN(P2>=ABS("35:00");1;0)+WENN(R2>=ABS("35:00");1;0)+WENN(T2>=ABS("35:00");1;0)+WENN(V2>=ABS("35:00");1;0)+WENN(X2>=ABS("35:00");1;0)+WENN(Z2>=ABS("35:00");1;0)
[ Da 35h pro Monat = ein halber Tag und man bekommt nur einen halben Tag pro Monat ]
Wenn Zelle "D2" 70:00h steht, dann steht in "Q2"=1 und die 35:00h Rest müssen dann in den nächsten Monat.
Wenn ich dann in Zelle "E2" die Mehrstunden X aus dem Monate Februar schreibe, kommt die Summe X+35:00H Rest aus dem Vormonat.
Das habe ich bis jetzt so gelöst:
Sub Worksheet_Change(ByVal Target As Range)
Dim a
Dim zelle As Range
Dim Bereich As Range
'***********************************************************
'Januar
'***********************************************************
a = ActiveSheet.Range("E1").Value
If Not Intersect(Target, Me.Range("F2:F2")) Is Nothing Then
Application.EnableEvents = False
Target.Value = a + Target.Value
End If
Application.EnableEvents = True
If Not Intersect(Target, Me.Range("E1:E1")) Is Nothing Then
Application.EnableEvents = False
Set Bereich = Range("F2:F2")
For Each zelle In Bereich
If zelle.Value <> "" Then
zelle.Value = zelle.Value + Range("E1").Value
End If
Next
End If
Application.EnableEvents = True
'***********************************************************
'Februar
'***********************************************************
a = ActiveSheet.Range("G1").Value
If Not Intersect(Target, Me.Range("H2:H2")) Is Nothing Then
Application.EnableEvents = False
Target.Value = a + Target.Value
End If
Application.EnableEvents = True
If Not Intersect(Target, Me.Range("G1:G1")) Is Nothing Then
Application.EnableEvents = False
Set Bereich = Range("H2:H2")
For Each zelle In Bereich
If zelle.Value <> "" Then
zelle.Value = zelle.Value + Range("G1").Value
End If
Next
End If
Application.EnableEvents = True
....
usw. für jeden Monat
Jetzt muss ich aber dafür zusätzlich eine Spalte und eine Zeile einfügen und das umständlich für jeden Monate und jeden neuen Mitarbeiter in VBA kopieren und umschreiben.
Mir würde eine Lösung mit der ich einfach den Wert addiere schon reichen, Hauptsache ich muss nicht den VBA-Code kopieren und umschreiben
So sieht meine Tabelle mit dem VBA aus
A B C D E F G H I J K L P Q
1 Name l Vorname l Gesetzt l Januar l Zusatz l Februar l Zusatz l März l Zusatz l Mai l Zusatz l Juni l... usw. l Überstunden l Anzahl halbe Tage
2 Name1
3 Name1
4 Zusatz
5 Name2
6 Name2
7 Zusatz
8 Name3
9 Name3
In der Zusätzlichen Zellen steht =WENN(D2>ABS("35:00");D2-"35:00";0)
Schon mal VIIIIIIIEEEELEN Dank im voraus :05: :05: :05:
Ich habe eine wunderschöne Idee und somit eine Problem.
Aufgabe: Ich habe eine Arbeitszeittabelle
A B C D E F G H P Q
1 Name l Vorname l Gesetzt l Januar l Februar l März l Mai l Juni l... usw. l Überstunden l Anzahl halbe Tage
2 Name1
3 Name1
4 Name2
5 Name2
6 Name3
7 Name3
...
usw.
Nun soll in Zeile 2, für jeden Mitarbeiter die geleisteten Mehrstunden rein geschrieben werden ( z.B.: 35:00h ), das passiert ab "D2"
Alles über 35:00h sind Mehrstunden und müssen in den nächsten Monat übernommen werden.
Was soll passieren:
Bei Eingabe in "D2" z.B. 70:00:00 > ( Das ist was ich schon habe )
Zelle "Q2"
=WENN(D2>=ABS("35:00");1;0)+WENN(F2>=ABS("35:00");1;0)+WENN(H2>=ABS("35:00");1;0)+WENN(J2>=ABS("35:00");1;0)+WENN(L2>=ABS("35:00");1;0)+WENN(N2>=ABS("35:00");1;0)+WENN(P2>=ABS("35:00");1;0)+WENN(R2>=ABS("35:00");1;0)+WENN(T2>=ABS("35:00");1;0)+WENN(V2>=ABS("35:00");1;0)+WENN(X2>=ABS("35:00");1;0)+WENN(Z2>=ABS("35:00");1;0)
[ Da 35h pro Monat = ein halber Tag und man bekommt nur einen halben Tag pro Monat ]
Wenn Zelle "D2" 70:00h steht, dann steht in "Q2"=1 und die 35:00h Rest müssen dann in den nächsten Monat.
Wenn ich dann in Zelle "E2" die Mehrstunden X aus dem Monate Februar schreibe, kommt die Summe X+35:00H Rest aus dem Vormonat.
Das habe ich bis jetzt so gelöst:
Sub Worksheet_Change(ByVal Target As Range)
Dim a
Dim zelle As Range
Dim Bereich As Range
'***********************************************************
'Januar
'***********************************************************
a = ActiveSheet.Range("E1").Value
If Not Intersect(Target, Me.Range("F2:F2")) Is Nothing Then
Application.EnableEvents = False
Target.Value = a + Target.Value
End If
Application.EnableEvents = True
If Not Intersect(Target, Me.Range("E1:E1")) Is Nothing Then
Application.EnableEvents = False
Set Bereich = Range("F2:F2")
For Each zelle In Bereich
If zelle.Value <> "" Then
zelle.Value = zelle.Value + Range("E1").Value
End If
Next
End If
Application.EnableEvents = True
'***********************************************************
'Februar
'***********************************************************
a = ActiveSheet.Range("G1").Value
If Not Intersect(Target, Me.Range("H2:H2")) Is Nothing Then
Application.EnableEvents = False
Target.Value = a + Target.Value
End If
Application.EnableEvents = True
If Not Intersect(Target, Me.Range("G1:G1")) Is Nothing Then
Application.EnableEvents = False
Set Bereich = Range("H2:H2")
For Each zelle In Bereich
If zelle.Value <> "" Then
zelle.Value = zelle.Value + Range("G1").Value
End If
Next
End If
Application.EnableEvents = True
....
usw. für jeden Monat
Jetzt muss ich aber dafür zusätzlich eine Spalte und eine Zeile einfügen und das umständlich für jeden Monate und jeden neuen Mitarbeiter in VBA kopieren und umschreiben.
Mir würde eine Lösung mit der ich einfach den Wert addiere schon reichen, Hauptsache ich muss nicht den VBA-Code kopieren und umschreiben
So sieht meine Tabelle mit dem VBA aus
A B C D E F G H I J K L P Q
1 Name l Vorname l Gesetzt l Januar l Zusatz l Februar l Zusatz l März l Zusatz l Mai l Zusatz l Juni l... usw. l Überstunden l Anzahl halbe Tage
2 Name1
3 Name1
4 Zusatz
5 Name2
6 Name2
7 Zusatz
8 Name3
9 Name3
In der Zusätzlichen Zellen steht =WENN(D2>ABS("35:00");D2-"35:00";0)
Schon mal VIIIIIIIEEEELEN Dank im voraus :05: :05: :05: