ich habe folgendes VBA Problem und komme leider absolut nicht mehr weiter. Ich soll eine Zeiterfassungsdatei erstellen, in der jeder Mitarbeiter die Zeiten und Tätigkeiten einträgt, die er bestimmten Projekten gewidmet hat. Da jeder Mtarbeiter ein eigenes Template haben soll, habe ich ein Standardtemplate erstellt. Nun sollen diesen gesamten Daten in einer Datei gesammelt werden. Dazu bin ich wie folgt vorgegangen:
1. Eine Art Masterfile erstellt
2. Jeder Mitarbeiter hat in diesem Masterfile ein eigenes Tabellenblatt, welches mit dem Originaltabellenblatt verknüpft ist. Die Daten ziehe ich über "Verbindungen", sodass sich das Blatt immer aktualisiert.
3. Im ersten Tabellenblatt soll nun eine Übersicht erfolgen, in der die Daten aller Mitarbeiter erfasst. Vereinfacht gesagt, nur untereinander kopiert.
4. Bei jeder Aktualisierung muss der vorherige Inhalt gelöscht werden, da beim sturen Untereinanderkopieren sonst doppelte Einträge entstehen würden.
4. Mein VBA Code dafür ist folgender:
Sub TabellenKopierenUntereinander()
Dim i As Integer
Dim z As Integer
With Sheets("Zusammenfuegen")
z = Cells(Rows.Count, 1).End(xlUp).Row
.Range(.Cells(2, 1), .Cells(z, 3)).ClearContents
End With
With ActiveWorkbook
For i = 2 To .Worksheets.Count
'Ermitteln den benutzen Bereich der einzelnen Tabellenblätter
Set Rng = .Worksheets(i).UsedRange
'letzte Zeile ermitteln des ersten Blattes
Set rng1 = Worksheets(1).Cells(Rows.Count, "A").End(xlUp)(2)
'Bereich kopieren
Rng.Copy Destination:=rng1
Next
End With
End Sub
Das Problem dabei ist, dass nun immer die Überschriften mit kopiert werden. Ich habe es absolut nicht geschafft, den "UsedRange" so zu definieren, dass quasi ab Zeile 2 alles ins erste Tabellenblatt kopiert wird. Da die Überschriften immer gleich sind, hatte ich sie manuell ins Tabellenblatt "Zusammenführen eingetragen.
Wie könnte ich außerdem die Gesamtübersicht so einrichten, dass die Überschriften in Zeile 5 sind und alle Werte beginnend in Zeile 6 erfolgen. Die ersten Zeilen muss ich nämlich noch für Beschreibungen nutzen (ehrlich gesagt, weiß ich nicht, warum es in Zeile 2 beginnt). Gibt es die Möglichkeit am Ende der generierten Gesamttabelle eine Art Summenzeile einzufügen. In dieser Summenzeile sollten die eingetragen Zeiten, die ein Mitarbeiter für die Tätigkeiten gebraucht hat, summiert werden. Auch hier muss die Möglichkeit bestehen, filtern zu können (quasi wie viel Zeit hat Mitarbeiter "Florian" mit "Blumen gießen" verbraucht)
Ich habe eine Testdatei angehängt (die Daten von den einzelnen Mitarbeitern habe ich manuell eingetragen).
Der Text ist ein wenig länger geworden, aber ich wollte genau beschreiben, was ich benötige und was mein Problem ist. Falls es generelle Anmerkungen gibt, wie man das verbessern könnte, bin ich für Vorschläge offen.
Vielen Dank schonmal,
Florian
https://www.herber.de/bbs/user/109019.xlsm