Hallo
ich hab vor einiger Zeit angefangen, für die Arbeit was in Excel anzufertigen. Das habe ich jetzt aus dem alten Schema in VBA umgebaut.
Dabei funktioniert mittlerweile auch fast alles… FAST!
Ein Teil des Quellcodes habe ich unten ma aufgeführt… Genau dieser verursacht mir nämlich noch Probleme. Er wird sofort beim Start der Excel-Datei mit ausgeführt und schreibt mir komischerweise in das erste Tabellenblatt.
int_abteilung beschreibt in meinem Fall Tabellenblätter. Allerdings startet dieses immer bei 1 und wird immer um 2 erhöht, sodass er frühestens beim 3. Blatt anfangen sollte, etwas einzutragen. Auch die Prozedur fte.sub_main kann nicht dafür verantwortlich sein, da sie keine Zelleinträge macht und die Variable int_abteilung auch nicht ändert.
Das sonderbarste habe ich heute festgestellt… Ich hab die fehlerhafte Prozedur mal in Einzelschritten durchlaufen. Und siehe da, es machte mir keine sinnlosen Eintragungen auf dem ersten Tabellenblatt. Als ich die Excel-Datei allerdings erneut öffnete und alles automatisch startete, kamen wieder die selben Fehler.
Ich hoffe, irgendjemand kann mir dabei helfen.
Und entschuldigt bitte, dass der Code noch so ‚unschön‘ ist. Ich habe selber erst vor ein paar Wochen mit VBA angefangen.
Danke schon Mal (und anbei der fehlerhafte Code)
Private Sub sub\_aktuelle()
For int\_standorte\_gesamt = 1 To 45 'vorhandene Standorte werden eingelesen & Zaehler auf 0 gesetzt
str\_standort(int\_standorte\_gesamt) = tbl\_einstellungen.Cells(int\_standorte\_gesamt + 2, 2).Value
str\_standort\_kz(int\_standorte\_gesamt) = tbl\_einstellungen.Cells(int\_standorte\_gesamt + 2, 3)
tbl\_einstellungen.Cells(int\_standorte\_gesamt + 2, 6).Value = ""
int\_standort(int\_standorte\_gesamt) = 0
Next int\_standorte\_gesamt
For int\_abteilung = 1 To int\_anzahl\_abteilungen 'durchlaeuft alle Abteilungen
For int\_team = 1 To int\_anzahl\_teams 'durchlaeuft alle Teams der aktuellen Abteilung
For int\_standorte\_gesamt = 1 To 45 'vergleicht Standort des aktuellen Teams mit gespeicherten
If Worksheets(int\_abteilung + 2).Cells(4, (int\_team \* 6) - 4).Value Like str\_standort(int\_standorte\_gesamt) Then
int\_standort(int\_standorte\_gesamt) = int\_standort(int\_standorte\_gesamt) + 1
Worksheets(int\_abteilung + 2).Cells(3, (int\_team \* 6) - 4) = "Team\_" & int\_team & "\_" & str\_standort\_kz(int\_standorte\_gesamt)
End If
Next int\_standorte\_gesamt
Next int\_team
Next int\_abteilung
For int\_standorte\_gesamt = 1 To 45 'Anzahl vorhandener Standorte wird eingetragen
tbl\_einstellungen.Cells(int\_standorte\_gesamt + 2, 4) = int\_standort(int\_standorte\_gesamt)
If int\_standort(int\_standorte\_gesamt) 0 Then
int\_standorte = int\_standorte + 1
End If
Next int\_standorte\_gesamt
ReDim str\_vorhandene\_standorte(int\_standorte)
int\_standorte = 0
For int\_standorte\_gesamt = 1 To 45 'durchlaeuft alle Standorte
If int\_standort(int\_standorte\_gesamt) 0 Then 'aktueller Standort vorhanden?
int\_standorte = int\_standorte + 1
str\_vorhandene\_standorte(int\_standorte) = str\_standort(int\_standorte\_gesamt) '...vorhanden -\> speichern
tbl\_einstellungen.Cells(int\_standorte + 2, 6) = str\_vorhandene\_standorte(int\_standorte) 'in Liste eintragen
tbl\_standorte.Cells(4, (int\_standorte \* 5) + 1) = str\_vorhandene\_standorte(int\_standorte) 'in Standort-Sheet eintragen
End If
Next int\_standorte\_gesamt
End Sub
Private Sub sub\_berechnen\_ausgabe()
For int\_standorte\_gesamt = 1 To int\_standorte
int\_anzahl\_teamleiter = 0
dbl\_teamleiter\_fte = 0
int\_anzahl\_mitarbeiter = 0
dbl\_mitarbeiter\_fte = 0
int\_mitarbeiter = 1 'fest auf 1 gesetzt da Teamleiter
'Teamleiterberechnung
deklaration.sub\_main 'Anzahlen & FTEs der Kennzeichen nullen
For int\_abteilung = 1 To int\_anzahl\_abteilungen
For int\_team = 1 To int\_anzahl\_teams
If Worksheets(int\_abteilung + 2).Cells(4, (int\_team \* 6) - 4) = str\_vorhandene\_standorte(int\_standorte\_gesamt) Then
fte.sub\_main
dbl\_teamleiter\_fte = dbl\_teamleiter\_fte + dbl\_einzel\_fte
End If
Next int\_team
Next int\_abteilung
int\_anzahl\_teamleiter = int\_anzahl\_mitarbeiter
For int\_zaehler = 1 To 14 'speichert die Kennzeichenanzahlen & -FTEs der Teamleiter
int\_kz\_teamleiter(int\_zaehler) = int\_kz(int\_zaehler)
dbl\_kz\_teamleiter(int\_zaehler) = dbl\_kz(int\_zaehler)
Next int\_zaehler
'Mitarbeiterberechnung
int\_anzahl\_mitarbeiter = 0
deklaration.sub\_main 'Anzahlen & FTEs der Kennzeichen nullen
For int\_abteilung = 1 To int\_anzahl\_abteilungen
For int\_team = 1 To int\_anzahl\_teams
If Worksheets(int\_abteilung + 2).Cells(4, (int\_team \* 6) - 4).Value = str\_vorhandene\_standorte(int\_standorte\_gesamt) Then
For int\_mitarbeiter = 2 To int\_max\_mitarbeiter 'durchlaeuft alle Mitarbeiter ohne Teamleiter im aktuellen Team
fte.sub\_main
dbl\_mitarbeiter\_fte = dbl\_mitarbeiter\_fte + dbl\_einzel\_fte
Next int\_mitarbeiter
End If
Next int\_team
Next int\_abteilung
For int\_zaehler = 1 To 14 'speichert die Kennzeichenanzahlen & -FTEs der Teamleiter
int\_kz\_mitarbeiter(int\_zaehler) = int\_kz(int\_zaehler)
dbl\_kz\_mitarbeiter(int\_zaehler) = dbl\_kz(int\_zaehler)
Next int\_zaehler
tbl\_standorte.Cells(8, (int\_standorte\_gesamt \* 5) + 3) = int\_anzahl\_mitarbeiter + int\_anzahl\_teamleiter
tbl\_standorte.Cells(8, (int\_standorte\_gesamt \* 5) + 4) = dbl\_mitarbeiter\_fte + dbl\_teamleiter\_fte
tbl\_standorte.Cells(9, (int\_standorte\_gesamt \* 5) + 3) = int\_anzahl\_teamleiter
tbl\_standorte.Cells(9, (int\_standorte\_gesamt \* 5) + 4) = dbl\_teamleiter\_fte
tbl\_standorte.Cells(10, (int\_standorte\_gesamt \* 5) + 3) = int\_anzahl\_mitarbeiter
tbl\_standorte.Cells(10, (int\_standorte\_gesamt \* 5) + 4) = dbl\_mitarbeiter\_fte
For int\_zaehler = 1 To 6 'traegt die Kennzeichendaten ein
tbl\_standorte.Cells(((int\_zaehler + 4) \* 3) + 1, (int\_standorte\_gesamt \* 5) + 3) = int\_kz\_teamleiter(int\_zaehler)
tbl\_standorte.Cells(((int\_zaehler + 4) \* 3) + 1, (int\_standorte\_gesamt \* 5) + 4) = dbl\_kz\_teamleiter(int\_zaehler)
tbl\_standorte.Cells(((int\_zaehler + 11) \* 3), (int\_standorte\_gesamt \* 5) + 3) = int\_kz\_mitarbeiter(int\_zaehler)
tbl\_standorte.Cells(((int\_zaehler + 11) \* 3), (int\_standorte\_gesamt \* 5) + 4) = dbl\_kz\_mitarbeiter(int\_zaehler)
Next int\_zaehler
Next int\_standorte\_gesamt
End Sub