Guten morgen zusammen,
Als erste entschuldige ich mich für die Deutschfehler, ich bin französin.
Ich habe ein kleines Problem mit meinem vba code.
Ich habe eine Buchungsliste gemacht, in meiner excel datei habe ich einen Kalender mit jeweils jeden Tag für die Spalten und in den Zeilen sind die Zeiten, von 8h bis 16h30.
In dieser Tabelle werden sich mitarbeiter in den verschiedenen Tagen und Zeiten eintragen.
Ich habe auch immer eine maximale anzahl an Mitarbeiter die sich in der selben Zeit eintragen können.
Dies variert, immer zwischen max 2 bis max 6 mitarbeiter.
Deshalb habe ich 6 virtuelle Tabellen erstellt, wo ich jeweils die Informationen der mitarbeiter abspeicher kann.
Ich mach mal ein stück code rein, dann ist es leichter zu verstehen (hoffe ich)
Select Case Right(Cells(Zeile + 24, Tag), 1) '<---Es handelt sich hier um die maximale anzahl, dass gibt der Teamleiter ein.
Case Is < 2
nom1(Zeile - 8, Tag - 2) = "" 'die zeile und der tag wird ausgerechnet. der mitarbeiter gibt in einen Userform ein von-bis-datum-name er arbeiten will
nom2(Zeile - 8, Tag - 2) = "belegt" 'mein Kalender fängt bei Zeile 8 an, deswegen mache ich bei meinen virtuellen Tablle die bei 0 anfangen -8
nom3(Zeile - 8, Tag - 2) = "belegt"
nom4(Zeile - 8, Tag - 2) = "belegt"
nom5(Zeile - 8, Tag - 2) = "belegt"
nom6(Zeile - 8, Tag - 2) = "belegt"
Case Is < 3
nom1(Zeile - 8, Tag - 2) = ""
nom2(Zeile - 8, Tag - 2) = ""
nom3(Zeile - 8, Tag - 2) = "belegt"
nom4(Zeile - 8, Tag - 2) = "belegt"
nom5(Zeile - 8, Tag - 2) = "belegt"
nom6(Zeile - 8, Tag - 2) = "belegt"
Case Is < 4
nom1(Zeile - 8, Tag - 2) = ""
nom2(Zeile - 8, Tag - 2) = ""
nom3(Zeile - 8, Tag - 2) = ""
nom4(Zeile - 8, Tag - 2) = "belegt"
nom5(Zeile - 8, Tag - 2) = "belegt"
nom6(Zeile - 8, Tag - 2) = "belegt"
Case Is < 5
nom1(Zeile - 8, Tag - 2) = ""
nom2(Zeile - 8, Tag - 2) = ""
nom3(Zeile - 8, Tag - 2) = ""
nom4(Zeile - 8, Tag - 2) = ""
nom5(Zeile - 8, Tag - 2) = "belegt"
nom6(Zeile - 8, Tag - 2) = "belegt"
Case Is < 6
nom1(Zeile - 8, Tag - 2) = ""
nom2(Zeile - 8, Tag - 2) = ""
nom3(Zeile - 8, Tag - 2) = ""
nom4(Zeile - 8, Tag - 2) = ""
nom5(Zeile - 8, Tag - 2) = ""
nom6(Zeile - 8, Tag - 2) = "belegt"
Case Is = 6
nom1(Zeile - 8, Tag - 2) = ""
nom2(Zeile - 8, Tag - 2) = ""
nom3(Zeile - 8, Tag - 2) = ""
nom4(Zeile - 8, Tag - 2) = ""
nom5(Zeile - 8, Tag - 2) = ""
nom6(Zeile - 8, Tag - 2) = ""
End Select
If nom6(Zeile - 8, Tag - 2) = "" Then
nom6(Zeile - 8, Tag - 2) = TextBox4.Value 'textbox4 ist der name des mitarbeiters
Cells(Zeile, Tag) = Cells(Zeile, Tag).Value & "/" & TextBox4.Value 'Hier trägt es in die richtige Zeit un tag ein
Else
If nom5(Zeile - 8, Tag - 2) = "" Then
Cells(Zeile, Tag) = Cells(Zeile, Tag).Value & "/" & TextBox4.Value
nom5(Zeile - 8, Tag - 2) = TextBox4.Value
Else
If nom4(Zeile - 8, Tag - 2) = "" Then
Cells(Zeile, Tag) = Cells(Zeile, Tag).Value & "/" & TextBox4.Value
nom4(Zeile - 8, Tag - 2) = TextBox4.Value
Else
If nom3(Zeile - 8, Tag - 2) = "" Then
Cells(Zeile, Tag) = Cells(Zeile, Tag).Value & "/" & TextBox4.Value
nom3(Zeile - 8, Tag - 2) = TextBox4.Value
Else
If nom2(Zeile - 8, Tag - 2) = "" Then
Cells(Zeile, Tag) = Cells(Zeile, Tag).Value & "/" & TextBox4.Value
nom2(Zeile - 8, Tag - 2) = TextBox4.Value
Else
If nom1(Zeile - 8, Tag - 2) = "" Then
Cells(Zeile, Tag) = Cells(Zeile, Tag).Value & "/" & TextBox4.Value
nom1(Zeile - 8, Tag - 2) = TextBox4.Value
Else
MsgBox ("Es sind schon zuviele eingetragen maximum : " & Right(Cells(Zeile + 24, Tag), 1) & " Personen um : " & z(i) & "Uhr")
End If
End If
End If
End If
End If
End If
Mein Problem ist dass die daten leider nicht in den virtuellen Tabellen bleiben, und man sieht dann nicht ob sich schon jemand anderes eingetragen hat.
Deshalb habe ich die 6 tabellen in 6 Tabellenblätter in excel gespeichert.
von dem code kommt :
For a = 0 To 30
For b = 0 To 17
nom1(b, a) = Tabelle1.Cells(b + 2, a + 2)
nom2(b, a) = Tabelle2.Cells(b + 2, a + 2)
nom3(b, a) = Tabelle3.Cells(b + 2, a + 2)
nom4(b, a) = Tabelle4.Cells(b + 2, a + 2)
nom5(b, a) = Tabelle5.Cells(b + 2, a + 2)
nom6(b, a) = Tabelle6.Cells(b + 2, a + 2)
Next b
Next a
Und am schluss
For a = 0 To 30
For b = 0 To 17
Tabelle1.Cells(b + 2, a + 2) = nom1(b, a)
Tabelle2.Cells(b + 2, a + 2) = nom2(b, a)
Tabelle3.Cells(b + 2, a + 2) = nom3(b, a)
Tabelle4.Cells(b + 2, a + 2) = nom4(b, a)
Tabelle5.Cells(b + 2, a + 2) = nom5(b, a)
Tabelle6.Cells(b + 2, a + 2) = nom6(b, a)
Next b
Next a
Aber wenn ich dass im einzelschritt durchlaufen lasse habe ich ein problem, es löscht alles wieder aus meinem Kalender raus wenn ich die Tabellenblätter wieder fülle..
Kann mir da jemand helfen? Hat jemand eine andere lösung.? |