VBA - Löschen Zellinhalt nur unter Voraussetzung zulassen
25.04.2025 16:16:04
Excel_Rolf
Mal wieder bräuchte ich eure Hilfe:
Ich habe ein Seminar-/Fortbildungs-Planungstool für unsere Firma gebastelt.
Auf dem Blatt "Terminplanung" tragen sich die Teilnehmer mit Namen zu einem Termin ein. Das Datum der Eintragung wird dann automatisch (per Formel) in einen nebenstehenden Tabellenteil übertragen, von wo aus die Personalverwaltung (PV) weiterarbeitet. Die PV quittiert dann die Termine bei den Personen für die erfolgte Buchung/Bearbeitung in unterschiedlichen Systemen (Arbeitszeitplanung, Platzreservierung Seminar, usw.) mit einem nebenstehenden "Ja".
Da auf diesem Arbeitsblatt eine Menge Formatierungen und Formeln hinterlegt sind und ich nicht will, dass da einer was kaputt macht, speist sich die Teilnehmerliste vom 2. Blatt "Teilnehmer Soll". Dort kann man die Teilnehmerliste gefahrlos ändern.
Meine Problemstellung
Ich bräuchte einen VBA-Code, der folgendes macht:
Wenn auf dem Blatt "Teilnehmer Soll" eine Person aus der Namensliste (B9:B80) gelöscht wird, soll erst geprüft werden, ob auf dem Blatt "Terminplanung" zu der Person (Name in L9:L80) bereits eine Quittierung ("Ja" in N9:N80 und/oder O9:O80 und/oder P9:P80 in derselben Spalte wie der Name) vorhanden ist und dann die Löschung verhindern, falls ja. Zusätzlich eine msgbox mit dem roten X und Hinweis "XY".
Wenn keine Quittierungen zu der Person vorhanden sind, soll der Name ganz normal gelöscht werden können.
Aufgrund verschiedener Sortierfunktionen ist es aber so, dass die Namen auf den beiden Arbeitsblättern nicht unbedingt in der gleichen Zeile stehen. Der Code müsste den betreffenden Namen bei einem Löschversuch also erstmal in Terminplanung!L9:L80 suchen und dann den Abgleich mit den nebenstehenden Zellen in N, O und P machen.
Zudem soll die Lösch-Prüfung natürlich nur im Bereich 'Teilnehmer Soll'!B9:B80 erfolgen. In allen anderen Zellen möchte ich ja ohne Probleme Inhalte löschen können.
Ich habe versucht mit meinen rudimentärsten VBA-Kenntnissen selbst eine Lösung zu finden, indem ich mir in "Teilnehmer Soll" die Spalte A als Krücke genommen habe.
Dort habe ich zu den nebenstehenden Personen in Spalte B mittels Formel die Quittierungen in "Terminplanung" abgeprüft und im Trefferfall das Wort "Eintrag" schreiben lassen. Leider schaffe ich selbst hierzu den VBA-Code nicht nach meinen Vorstellungen zu bauen.
Eleganter wäre der Code natürlich ohne Krücke, aber es würde auch nicht stören, wenn es mit erheblicher einfacher wäre.
Danke schonmal für eure Hilfe
Rolf
PS: Die Datei habe ich leider gerade nicht zur Hand, da sie auf dem Büro-PC liegt und ich von zuhause aus schreibe.
Sonst hätte ich sie natürlich gleich mit hochgeladen.
Solltet ihr sie aber brauchen, um meinen Wirrwarr zu verstehen, bekomme ich die aber schon her.
Anzeige