Clever-Excel-Forum

Normale Version: Pro ausgefüllte Zelle einen Eintrag in einem anderen Arbeitsblatt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen

Danke für die Aufnahme im Forum. Dies ist mein erster Beitrag, und ich hoffe, ich verhalte mich damit den Regeln entsprechend. Ich brauche eure Unterstützung.

Ich bin gerade daran, in Excel eine Personalplanung zu erstellen. Ich habe hierzu in einem Tabellenblatt "A" in einer Zeile die Tage aufgelistet, also 365 Einträge von links nach rechts. Darunter habe ich die Namen der Mitarbeiter. Ich kann nun bei jedem Mitarbeiter an einem beliebigen Tag ein X machen, und dann zählt es mir die anzahl "X" in der Spalte zusammen. So kann ich also z.b. Ferien planen. Ich weiss dan dass Person "A" 12 Tage bezogen hat, weil in der ganzen Zeile 12 mal ein X vorkommt. Soweit so gut, das habe ich auch noch hinbekommen.

Nun kommt aber der Teil, an dem ich nicht mehr weiterkomme.

Ich möchte zusätzlich pro Mitarbeiter ein eigenes Arbeitsblatt. Auf diesem Arbeitsblatt soll er mir pro "X" welches ich auf dem Tabellenblatt "A" gestetzt habe, eine eigene Zeile mit dem Datum an dem das X gesetzt wurde einfügen. So könnte ich dieses Blatt dann dem Mitarbeiter ausdrucken, und er hat dann eine Liste, an welchen Tagen er Urlaub hatte.

Geht sowas allenfalls mit VB Script oder anderen Programmiersprachen? Hat jemand Erfahrung damit und könnte mir da helfen? Wäre echt super.

Danke schon mal im Voraus.

Grüsse aus der Schweiz.

Reto
Hallo Reto,

wenn es nur um den Ausdruck geht, dann würde ich dafür nicht extra für jeden Mitarbeiter ein eigenes Blatt vorhalten. Da reicht doch ein Blatt, in das dann die entsprechenden Daten rein kopiert werden.

Zudem würde ich dafür das Doppelklick-Event deines Blattes A verwenden.

Mein Code geht von folgenden Voraussetzungen aus:

Die Datumswerte des Jahres stehen in Zeile 1, beginnend ab B1
Die Namen der Mitarbeiter stehen in Spalte A, beginnend ab A2


Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long, z As Long

If Target.Column = 1 And Target.Row > 1 Then
   Cancel = True
   z = 3
   
   'Blatt für den Ausdruck, Blattname anpassen
   Worksheets("Tabelle2").Cells.ClearContents
   
   For i = 2 To 366
       If UCase(Cells(Target.Row, i)) = "X" Then
           'Blattname anpassen
           Worksheets("Tabelle2").Cells(z, 1) = Cells(1, i)
           z = z + 1
       End If
   Next i
   
   'Blattname anpassen
   If Worksheets("Tabelle2").Cells(3, 1) <> "" Then
       'Blattname anpassen
       Worksheets("Tabelle2").Cells(1, 1) = Target
   End If
End If
End Sub


Der Code gehört ins Codemodul deines Blattes A
-Rechtsklick auf den Tabellenblattreiter - Code anzeigen - Code rechts ins Codefenster kopieren.

Der Code reagiert auf einen Doppelklick auf den Namen eines Mitarbeiters.

Gruß Werner