Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Früh Spät Nacht - VBA Formel

Forumthread: Früh Spät Nacht - VBA Formel

Früh Spät Nacht - VBA Formel
26.02.2021 08:12:02
Manuela
Hallo,
melde mich mal seit langem mal wieder, und benötige eure Hilfe.
Ich habe vorher es mit einer Formel gelöst, aber geht wegen gewissen Umstellungen nicht mehr. ES MUSS PER VBA HINZUGEFÜGT WERDEN.
Die Formel lautete:
=WENN(ANZAHLLEEREZELLEN(A8)=1;" ";WENN(E8>=ZEITWERT("22:00:00");"Nachtschicht"; WENN(E8 Mein Gedanke jetzt per VBA z.B.:
IF Time.Value = >22:00 Uhr Then Range("C" lngFirstFree).Value = "Nachtschicht"
lngFirstFree Ist in der Formel das es mir eine Zeile immer weiter schreibt, sollte euch aber nicht so stören.
Dim lngFirstFree As Long
lngFirstFree = Cells(Rows.Count, 1).End(xlUp).Row + 1
Danke und Gruß
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Früh Spät Nacht - VBA Formel
26.02.2021 08:21:53
Daniel
Hi
so vieleicht:
Range("C" & lngFirstFree).Value = Array("", "Nachtschicht", "Frühschicht", "Spätschicht", "Nachtschicht")(Application.Match(cdbl(Time), Array(0, 6/24, 14/24, 22/24), 1))
Gruß Daniel
AW: Früh Spät Nacht - VBA Formel
26.02.2021 08:32:03
Manuela
Hallo Daniel,
scheint zu funktionieren. Test es mal durch.
Danke vielmals.
Gruß
Anzeige
;
Anzeige

Infobox / Tutorial

VBA zur Bestimmung von Schichten in Excel


Schritt-für-Schritt-Anleitung

Um eine VBA-Lösung zur Bestimmung von Schichten in Excel zu implementieren, gehe wie folgt vor:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub BestimmeSchicht()
        Dim lngFirstFree As Long
        lngFirstFree = Cells(Rows.Count, 1).End(xlUp).Row + 1
    
        If Time >= TimeValue("22:00:00") Then
            Range("C" & lngFirstFree).Value = "Nachtschicht"
        ElseIf Time >= TimeValue("14:00:00") Then
            Range("C" & lngFirstFree).Value = "Spätschicht"
        ElseIf Time >= TimeValue("6:00:00") Then
            Range("C" & lngFirstFree).Value = "Frühschicht"
        Else
            Range("C" & lngFirstFree).Value = ""
        End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros > wähle BestimmeSchicht > klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"

    • Lösung: Stelle sicher, dass alle notwendigen Referenzen in VBA aktiviert sind. Prüfe unter Extras > Verweise.
  • Fehler: "Typen unverträglich"

    • Lösung: Überprüfe, ob die Zeit im richtigen Format eingegeben wurde. Die Funktion TimeValue kann helfen, sicherzustellen, dass die Zeit korrekt interpretiert wird.

Alternative Methoden

Falls VBA nicht die bevorzugte Wahl ist, kannst du auch mit Formeln arbeiten, um die Schichtzuweisung zu realisieren:

  1. Verwende die folgende Formel in Zelle C8 (oder der entsprechenden Zelle):

    =WENN(ANZAHLLEEREZELLEN(A8)=1;"";WENN(E8>=ZEITWERT("22:00:00");"Nachtschicht";WENN(E8>=ZEITWERT("14:00:00");"Spätschicht";WENN(E8>=ZEITWERT("6:00:00");"Frühschicht";""))))
  2. Ziehe die Formel nach unten, um sie auf andere Zellen anzuwenden.


Praktische Beispiele

Angenommen, du hast folgende Zeiten in Spalte E:

E C
23:00 Nachtschicht
15:30 Spätschicht
08:00 Frühschicht

Wenn du das VBA-Skript ausführst, wird in Spalte C die entsprechende Schicht für die eingegebene Zeit angezeigt.


Tipps für Profis

  • Verwende Application.Match: Wie Daniel im Forum vorgeschlagen hat, kannst du Application.Match verwenden, um die Schichten dynamisch zuzuweisen.

    Range("C" & lngFirstFree).Value = Array("", "Nachtschicht", "Frühschicht", "Spätschicht")(Application.Match(cdbl(Time), Array(0, 6/24, 14/24, 22/24), 1))
  • Optimiere deinen Code: Vermeide redundante Berechnungen, indem du den Wert von Time in einer Variablen speicherst.


FAQ: Häufige Fragen

1. Kann ich das Makro so anpassen, dass es automatisch bei Änderungen in der Zeitspalte ausgeführt wird?
Ja, du kannst das Makro in das Worksheet-Change-Ereignis integrieren, um es bei Änderungen automatisch auszuführen.

2. Gibt es eine Möglichkeit, die Schichten farblich zu kennzeichnen?
Ja, du kannst bedingte Formatierung in Excel verwenden, um Zellen basierend auf ihrem Inhalt zu formatieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige