1.7k Aufrufe
Gefragt in Tabellenkalkulation von
Bisher habe ich noch kaum Ahnung von Makros und VBA, weiß nur wie man Makros aufzeichnet und mittels Button-Zuweisung ausführen könnte.
Mein folgendes Problem lässt sich damit jedoch nicht mehr lösen und wäre für Hilfe dankbar:

Ich habe eine dienstbezogene Arbeitszeitberechnung erstellt.

Wenn jemand in Zelle D7 ein Dienstkürzel eingibt (Bsp. T für Tagdienst oder N für Nachtdienst) werden in Zelle F7 bis G7 Dienstbeginn und -Ende als Uhrzeit mittels SVERWEIS Formeln automatisch eingetragen.

Wenn man aber in der Nachbarzelle Zelle E7 das Kürzel FB für Fortbildung oder DV für Dienstversammlung einträgt, sollen sich die sonst gesperrten Zellen F7 bis G7 (wenn sie nach Prüfung wirklich keine Werte enthalten) entsperren, und orange einfärben, damit man manuell die Zeiten eintragen kann.

Entfernt man in Zelle E7 das Zusatz-Kürzel wieder, sollen die Formel (die ich in Zelle F45 bis G45 quasi als Backup nochmals versteckt hinterlegt habe) wieder hergestellt werden, die Färbung wieder entfernt und die Zelle wieder gesperrt werden!

Die Kürzel wählt der User aus einer Dropdownliste aus, die ich mittels Datenprüfung - Liste realisiert habe!

Ich brauche also ein Makro, welches die Zelle E7 überwacht und bei Änderung in vereinfachter "Formelsprache" folgendes macht:

Bei Änderung der Zelle von LEER in KÜRZEL:
WENN
PRÜFUNG E7=FB ODER E7=DV UND die Formel F7 und G7 ergibt =""
DANN -> alle eben geprüften Zellen die "" ergeben haben: FORMAT "entsperren" und orange-Füllen
SONST Zelle so lassen

Bei Änderung der Zelle von KÜRZEL in LEER:
WENN
PRÜFUNG E7=LEER ODER E7=LEER
DANN "kopiere F45 in F7 und G45 in G7" und Format "sperren" und Füllung "keine"
SONST Zelle so lassen

Könnt Ihr mir da auf die Sprünge helfen?

Ich habe ein auf das Kernproblem reduziertes Arbeitsblatt erstellt, um das Ganze nochmal deutlich zu machen!
Unter
www.boulderwerft.com/privat/zellsperrung.xls
könnt Ihr die Datei runterladen und mal sehen ob es eine elegante Lösung gibt!

5 Antworten

0 Punkte
Beantwortet von
Hallo,
ich kann mir das nur so vorstellen:
Alle Zellen mit Formeln sind geschützt, kein Eintrag möglich.
In der Zelle "DV"; "FB" Formeln werden gelöscht, und Zelle wird farbig, Eintrag möglich.
Zelle ist ohne Eintrag, Formeln werden wieder eingetragen (kein Backup der Formeln zur Rückkopierung durch Makro), ohne Farbe, Eintrag nicht möglich.

http://www.file-upload.net/download-1374995/zellsperrung.xls.html

Gruß
fedjo
0 Punkte
Beantwortet von
Das ist schon nah dran an dem was ich wollte...
2 Sachen fallen mir auf:

1.
Das mit dem Zellschutz ist so nicht optimal, da zwar alles mit Formel nicht auswählbar ist, jedoch alle anderen Felder nun ungeschützt sind, formatiert werden können etc...
Das sollte schon weiterhin über einen Blattschtuz normal gedeckelt und eingeschränkt werden können.

2. Die selektive Freigabe funtioniert nicht wie gedacht...
Das heisst, bei FB löscht er offenbar immer alle 4 Felder, bei DV immer die letzten 2.
Eleganter wäre tatsächlich, wenn er die 4 Zellen tatsächlich vorher prüfen könnte und dann nur Zellen freigibt die noch keinen Wert enthalten...

Ist das machbar?
0 Punkte
Beantwortet von
1 Über den Blattschutz nur einzelne Zellen freigeben die sich dan auch immer wieder verändern, kann ich mir nur schwer vorstellen oder ist zu aufwendig.

2 Zellen prüfen ob ein Eintrag vorhanden ist, auch Formeln werden als Wert erkannt.
0 Punkte
Beantwortet von
Ich habe deinen Code nochmal nach meinen Idee-Ansätzen verwurstet und angepasst...

Habe eine simple If-Prüfung eingebaut, die checkt ob der Zellwert "" ist.
Wenn ja, dann wird die Zelle freigegeben, wenn nicht, dann über Else eben nicht!

Bisher wirkt der Code leider nur auf die Spalte mit index 5 (Spalte E9)
Mir fehlt das KnowHow um diese Prüfung eleganterweise mit schlanken Code auf Spalte 5, 6, 7 und 8 gleichermaßen anzuwenden.

Wie findet Ihr das?

www.boulderwerft.de/privat/zellsperrung (3).xls
0 Punkte
Beantwortet von
So, jetzt habe ich mir selbst geholfen und es klappt alles so wie ich es wollte...

Der Code lässt sich mit Sicherheit schlanker schreiben, aber es klappt zumindest!

Hier die Lösungsdatei!!!

www.boulderwerft.de/privat/zellsperrung (4).xls

Wer den Code optimieren will: Ich bin offen für Tipps...
...