Clever-Excel-Forum

Normale Version: Erstellen einer Anwesenheitsliste in VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

nun ist mein Projekt dank der Hilfe von euch und zahlreichen Videos von Andreas Thehos fast beendet und dafür möchte ich mich nochmal bei euch allen bedanken. Ihr seid eine super Mannschaft :28:.

Eventuell kann ich eure Hilfe noch einmal in Anspruch nehmen.
Ich möchte aus einer Liste mit Arbeitszeiten (Tabellenblatt Arbeitszeiten) die Spalten A,B,C und die jeweiligen Arbeitszeiten des aktuellen Tages (heute), in das Tabellenblatt Anwesenheit (A5:D100)kopieren.
(es soll aber nur kopiert werden, wenn wirklich eine Arbeitszeit (z.B. 08: 16:30) im Blatt "Arbeitszeiten" eingetragen ist. Steht hier Urlaub, Frei, JAZ oder KO usw. soll nicht kopiert werden.)

Meine Datei habe ich angefügt, da man sich so am besten ein Bild machen kann was ich meine :25:.

Danke an alle und Gruß Mario
Hallo Mario,

hier als Ereigniscode im VBA-Modul des Tabellenblatts "Anwesenheit".
"Passwort" für Aufheben und Setzen des Blattschutzes musst Du entsprechend ändern.

Code:
Private Sub Worksheet_Activate()
  Dim lngzeileQ As Long, lngzeileZ As Long, lngSpalteQ As Long
  Me.Unprotect "Passwort"
  Me.Range("A5:D100") = ""
  lngzeileZ = 4
  With Tabelle3
    lngSpalteQ = Application.Match(CDbl(Date), .Rows(10), 0)
    For lngzeileQ = 12 To .Cells(.Rows.Count, 1).End(xlUp).Row
      If Len(.Cells(lngzeileQ, lngSpalteQ).Value) = 11 Then
        lngzeileZ = lngzeileZ + 1
        Me.Cells(lngzeileZ, 1).Resize(, 3).Value = .Cells(lngzeileQ, 1).Resize(, 3).Value
        Me.Cells(lngzeileZ, 4).Value = .Cells(lngzeileQ, lngSpalteQ).Value
      End If
    Next lngzeileQ
  End With
  Me.Protect "Passwort"
End Sub

Gruß Uwe
Hallo Uwe,

ich bin begeitert, dass ist perfekt :23:. Es funktioniert so wie ich mir das vorgestellt haben.
Vielen Dank für deine schnelle Hilfe und ein schönes Wochenende.

VG Mario