Ich kenne mich in VBA kaum aus und benötige dringend Hilfe. Ich habe einen Jahresurlaubskalender vom Kollegen übernommen, der leider nicht mehr in der Fa. ist.
Jedes Monat hat sein eigenes Tabellenblatt. Es sind in Spalte A die Mitarbeiter aufgeführt, Spalte B der Einsatztag, Spalte C = Arbeitsstunden
Name des Mitarbeiters |
|
|
Fr |
Sa |
So |
Mo |
Di |
Mi |
Do |
Fr |
Sa |
So |
Mo |
Di |
Mi |
Do |
Fr |
Sa |
So |
Mo |
Di |
Mi |
Do |
Fr |
Sa |
So |
Mo |
Di |
Mi |
Do |
Fr |
Sa |
So |
Gesamtstd. |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|
Mitarbeiter 1 |
Sa |
6 |
|
6 |
|
|
5,5 |
5,5 |
5,5 |
|
6 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
6 |
|
30 |
Mitarbeiter 2 |
Mo |
5,5 |
|
|
|
5,5 |
|
|
|
|
|
|
5,5 |
|
|
|
|
|
|
5,5 |
|
|
|
|
|
|
5,5 |
|
|
|
|
|
|
22 |
Mitarbeiter 3 |
Do |
6 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
6 |
|
|
|
24 |
Für den entsprechenden Arbeitsag sind Formeln hinterlegt die er dann aus Spalte B und C zieht. Wenn ich nun einen Mitarbeiter aber zusätzlich benötige dann trage ich wie im Bsp. die täglichen Sollarbeitsstunden ein. (hier 05.01. bis 07.01. jeweils 5,5 Stunden bei Mitarbeiter 1). Leider erkennt er Kommazahlen die ich eintrage nicht als Zahl und rechnet bei den Gesamtstunden auch nicht mehr. Komischerweise wenn ich volle Zahlen eintrage, wird wieder gerechnet.
Ich habe jetzt für das Tabellenblatt das Makro ausgeschaltet und nun rechnet er wiieder mit Kommazahlen. Könnt ihr bitte mal drauf schauen, vielleicht liegt es ja am Makro. Eines noch, wenn ich z.B. auf den Mitarbeiter 1 klicke dann wird für den Miarbeiter gleich ein Urlaubsbeleg in einem anderen Tabellenblatt ausgeführt. Dies möchte ich auch weiterhin behalten.
Bzw. jetzt habe ich den Befehl in Zeile 3 geändert auf
If Intersect(Target, Me.Range("AX6:AX99")) Is Nothing Then Exit SubDanke schon mal auf Antworten.
Jetzt rechnet er wieder, aber weiß nicht welche Auswirkungen dies für den Rest der Datei bedeutet.
Original - Befehl:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Me.Range("C6:AG99")) Is Nothing Then Exit Sub
On Error GoTo CleanUp:
With Target
If .Value <> "" Then
Application.EnableEvents = False
.Value = UCase(.Value)
End If
End With
CleanUp:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A6:A99")) Is Nothing Then
Selection.Copy
Sheets("Auswertung").Range("B5").PasteSpecial Paste:=xlValues
Sheets("Auswertung").Select
Application.CutCopyMode = False
End If
End Sub
Sub Einblenden()
If Columns("AP:AX").Hidden = True
Select Case Target
Case "Jan": Columns("AP:AX").Hidden = False
End Select
End If
End Sub
|