Automatische Aktualisierung excellence?

...komplette Frage anzeigen

2 Antworten

Das von Dir angestrebte System ist sehr Fehler-anfällig: einmal versehentlich eine Zahl eingegeben oder aber die falsche: die wird sofort verwurstet und nichts ist mehr nachvollziehbar! Gibt endlos Streit mit Leuten, die meist ihren eigenen Urlaub minutiös führen und deshalb meist auch recht haben!

Es ist viel besser, Du machst Dir rechts draussen(1xscrollen) einen Bereich, wo Du in jede Zelle zB ="1.8.16"-"1.8.16"+1 für einen einzelnen oder ="5.8.16"-"1.8.16"+1 für max eine ganze Woche einträgst. Für längere Zeiträume befasst Du Dich besser  mal mit den xl-Funktionen Arbeitstag  und Arbeitstag.INTL.

Für Bemerkungen/Absprachen kannst du zusätzlich die Kommentarfunktion nutzen.

Jedenfalls kannst du dann über die Summe dieses Bereichs (zB hellstgrauer Hintergrund zur Markierung oder dicken Rahmen, damit auch alle Einträge innerhalb liegen, 20 Spalten sollten reichen, da ja wenigstens 2 Wochen =2 Zellen am Stück genommen werden müssen) die Zahl der genommenen Urlaubstage nachvollziehen und ggf mit Argumenten diskutieren. Als Format musst Du im Bereich Zahl festlegen, xl würde sonst immer aus den Tagen ein Datum machen.

in Spalte A solltest du den Namen schreiben und die Spalte "einfrieren", wie das fixieren jetzt heißt. Evtl die Namenszeilen mit unterschiedlichen Muster(farbe)n füllen, damit Du nicht in der Zeile verrutscht.

Daneben kannst Du den Gesamturlaub und Formeln für
den berechneten Resturlaub  eintragen.

Wenn du es genauso gelöst haben willst, geht das nur umständlich mit VBA. Aber vielleicht reicht dir ja auch eine Alternative.

A1: Urlaubstage gesamt (Bsp. 30)
A2: Urlaubstage verbleibend. Formel: =A1-B1
B1: Urlaubstage beansprucht. 

B1 kannst du mit einem Drehfeld verknüpfen.

(Excel 2010:) Entwicklertools → Steuerelemente → Einfügen → Drehfeld
Klick aufs Drehfeld → Eigenschaften → Maximalwert 30; Minimalwert 0; Zellverknüpfung: B1

Kwixii1337 28.07.2016, 11:00

Kannst du mir den umständlichen Weg erklären ?

0
Suboptimierer 28.07.2016, 11:23
@Kwixii1337

Auf eine ausführliche Erklärung habe ich keine Lust. Ich poste dir den Quelltext. Wie du ihn implementierst, musst du selbst recherchieren.

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$B$1" Then
    If IsNumeric(Range("B1").Value) Then _
      Range("A1").Value = Range("A1").Value + Range("B1")
    On Error GoTo EreignisseAktivieren
    Application.EnableEvents = False
    Range("B1").Clear
EreignisseAktivieren:
    Application.EnableEvents = True
    On Error GoTo 0
  End If
End Sub
0

Was möchtest Du wissen?