Dienstplan in Excel, Markieren gleicher Namen

Gruß an Alle die das hier lesen.
Ich habe mich beim letzen mal etwas unklar ausgedrückt, und mein Problem nicht sauber dargestellt. Entschuldigung dafür. Hier also mein Problem im Detail. Ich möchte mir die Erstellung eines Dienstplanes für meine Abteilung etwas erleichtern.

Der Plan hat die folgenden Dimension
Zeile 2-32 sind die Tage
Spalte A Datum
Spalte B Wochentag
Spalte C Station 1
Spalte D Station 2
Spalte E station 3
Spalte F Station 4
Spalte G Station 5
Spalte H Bereitschaft
Spalte I Hintergrund
Spalte J Notarzt
Spalte K Dialyse
Spalte L Urlaub
Spalte M Befreiung

In einer Zelle können auch mal mehrere Namen stehen (bei den Stationen, z.B.) getrennt von einander durch ein /.

Wer jetzt Bereitschaftsdienst hat, kann nicht am Folgetage auf einer der Stationen arbeiten, kann nicht am Folgetage Notarzt sein oder Dialysedienst leisten. Er kann ebenfalls nicht am selben Tage in Urlaub oder Befreiung sein.

Mir schwebt da ein dynamisches Makro vor wie folgt. Immer wenn der Cusor in der Spalte Bereitschaft in einer bestimmten Zelle steht soll er den Namen vergleichen mit den Zellen in Station 1-5 sowie Notarzt und Dialyse eine Zeile darunter und gleichzeitig mit den Namen in Urlaub und Befreiung in der gleichen Zeile. Diese Namen sollen dann einfach Rot markiert werden, damit ich entscheiden kann ob ich nun die Stationsbelegung ändere oder der betreffende an diesem Tag keinen Dienst macht.

Rutsche ich mit dem Cursor eine Zelle tiefer soll der gleiche Vergleich eben eine Zeile tiefer, nach den selben Regeln wie beschrieben erfolgen und die vorangegangene Markierung verschwinden.

Zudem Enthält eine Arbeitsmappe immer alle 12 Monate eines Jahres. Die Tabellenblätter sind exakt identisch von den Ausmassen, daher wäre ein Makro klasse, das beim Öffnen der Mappe gleich in allen Tabellenblättern automatisch läuft.

Mit meinem allerbesten Dank im Voraus für die Mühe des lesens und evtl. auch lösens :smile:

P.s. da ich ein Newbie bin in VBA, kann ich leider selber nicht mit einem Lösungsansatz dienen. Bisher habe ich aus verschiedenen Forgen Lösungen für meine Probleme „geklaut“ und auf meine Bedingungen abändern können. Zu diesem speziellen Ding habe ich aber leider nichts gefunden, das ich in der Lage gewesen wäre zu adaptieren. Daher die aus Eurer Sicht vieleicht banale Frage.

Ich habe mich beim letzen mal etwas unklar ausgedrückt, und
mein Problem nicht sauber dargestellt. Entschuldigung dafür.
Hier also mein Problem im Detail. Ich möchte mir die
Erstellung eines Dienstplanes für meine Abteilung etwas
erleichtern.

Hallo Fabian,

erleichter uns das und lade mit fileupload, s. FAQ:2606 eine
Beipielmappe hoch.
Mit ausgefüllten Spalten wo das vorkommt was du beschreibstt.
So 15-20 Datenzeilen.

Gruß
Reinhard

Hallo Reinhard, Danke für die rasendschnelle Reaktion, hab etwas gebraucht mit dem Upload, aber hier der Links zu einer Beispieltabelle anhand eines Monats. Wie gesagt, normalerweise enthält eine Arbeitsmappe immer 12 Monate eines Jahres.

http://www.file-upload.net/download-4402983/Beispiel…

Da ist keine einzige Datenzeile drin :frowning: o.w.T.

Grüezi Fabian

Wer jetzt Bereitschaftsdienst hat, kann nicht am Folgetage auf
einer der Stationen arbeiten, kann nicht am Folgetage Notarzt
sein oder Dialysedienst leisten. Er kann ebenfalls nicht am
selben Tage in Urlaub oder Befreiung sein.

Mir schwebt da ein dynamisches Makro vor wie folgt. Immer wenn
der Cusor in der Spalte Bereitschaft in einer bestimmten Zelle
steht soll er den Namen vergleichen mit den Zellen in Station
1-5 sowie Notarzt und Dialyse eine Zeile darunter und
gleichzeitig mit den Namen in Urlaub und Befreiung in der
gleichen Zeile. Diese Namen sollen dann einfach Rot markiert
werden, damit ich entscheiden kann ob ich nun die
Stationsbelegung ändere oder der betreffende an diesem Tag
keinen Dienst macht.

Rutsche ich mit dem Cursor eine Zelle tiefer soll der gleiche
Vergleich eben eine Zeile tiefer, nach den selben Regeln wie
beschrieben erfolgen und die vorangegangene Markierung
verschwinden.

Schau doch mal, ob dies hier deine Vorstellungen einigermassen trifft.
Bedingug ist, das in der letzten Zeile unter dem Monatsletzten mittels Formeln ein Bezug zu den Daten des Monatsersten des Folgemonates erstellt wird, damit der Verlgleich damit gemacht werden kann.

Das Makro sucht sich seinen ‚Wirkungsbereich‘ automatisch an den in Spalte A enthaltenen Einträgen. In Spalte A sollte daher sonst nichts mehr stehen.

http://users.quick-line.ch/ramel/Demo-Daten/tr_Beisp…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hmm, nicht ganz das was ich meinte, aber vieleicht kann man was draus machen. Vielen Dank für Deine Hilfe, es ist allemal ein weg in die richtige Richtung.

Grüezi fabian

Hmm, nicht ganz das was ich meinte, aber vieleicht kann man
was draus machen.

Was daran entspricht denn nicht deiner Beschreibung die Du gegeben hast?

Beim markieren in der genannten Spalte wir der Name dar darin steht mit den genanten Zellen verglichen und diese eingefärbt, wenn der Name darin enthalten ist.

Soooo weit daneben kann das nun wirklich nicht liegen…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Ich dachte es wird eine Vorlage der Tabelle benötigt. In den Zeilen werden Namen stehen.

Enstchulige Bitte, Du hast völlig recht, der Plan tut was er soll. Genial. Könntest Du mir den Code nennen. Ich komme nicht an ihn ran, wenn ich den VB-Manager lade.

Grüezi Fabian

Enstchulige Bitte, Du hast völlig recht, der Plan tut was er
soll. Genial. Könntest Du mir den Code nennen. Ich komme nicht
an ihn ran, wenn ich den VB-Manager lade.

Wo genau im VBA-Editor hast Du denn gesucht?

Wechsle in den VBA-Editor mit ALT+F11
Klicke dann doppelt auf ‚Diese Arbeitsmappe‘

Da findest Du dann die folgenden Code-Zeilen:

Option Explicit

Private Sub Workbook\_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim rngCheck As Range
Dim rngZelle As Range
 Sh.Range("C2").Resize(Application.WorksheetFunction.CountA(Sh.Range("A:A")), 11).Font.ColorIndex = xlColorIndexAutomatic
 If Target.Cells.Count = 1 Then
 If Target.Value "" Then
 If Not Intersect(Target, Sh.Range("H2").Resize(Application.WorksheetFunction.CountA(Sh.Range("A:A")), 1)) Is Nothing Then
 Set rngCheck = Union(Target.Offset(1, -5).Resize(1, 5), \_
 Target.Offset(1, 2).Resize(1, 2), \_
 Target.Offset(0, 4).Resize(1, 2))
 For Each rngZelle In rngCheck.Cells
 If InStr(1, rngZelle.Value, Target.Value) \> 0 Then
 rngZelle.Font.ColorIndex = 3
 End If
 Next rngZelle
 End If
 End If
 End If
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Ganz,ganz herzlichen Dank für Deine Hilfe, das ist wirklich genial.
mit den allerbesten Grüßen fabiaexcel123

Grüezi Fabian

Ganz,ganz herzlichen Dank für Deine Hilfe, das ist wirklich
genial.

Aber gerne doch, es freut mich, wenn das Ganze passt :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -