HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
365 privat
Erfahrungslevel des Fragestellers:
Kaum Excel/VBA-Kenntnisse
Case
24.05.2026 11:45:10
In deinem...
Moin, :-)

Modul habe ich nur UserInterfaceOnly:=True (also von False auf True geändert). Dann können Makros Änderungen vornehmen, ohne dass du den Blattschutz aufheben musst. ;-)
https://learn.microsoft.com/de-de/office/vba/api/excel.worksheet.protect

Sonst habe ich mir das Modul nicht näher angeschaut. ;-)

Nun geht sowas (wenn du im DropDown bist und Entf drückst kannst du es wieder entfernen): ;-)
https://www.herber.de/bbs/user/180736.xlsb

Servus
Case
Als Antwort auf diesen Beitrag
Passant
24.05.2026 09:28:29
AW: Da ist mindestens....
Moin Case,
die Lösung mit der Input-Box ist genial! War total überrascht, als ich deine Datei ausprobiert habe. Auf diese Idee wäre ich überhaupt nicht gekommen und umsetzen hätte ich sie natürlich erst recht nicht können. Vielen Dank dafür!

Jetzt ergibt sich leider ein weiteres Problem, an das ich vorher nicht gedacht habe: Immer wenn eine Dropdownliste in B einen der Werte: Urlaub, Feiertag, Krankheit, Überstunden hat, soll C und D jeweils den Wert 00:00 erhalten. Ich habe in der Dropdownliste auch noch ein Leerzeichen (Alt 0160) als Wert, wenn das ausgewählt wird, oder der jeweilige Wert in der Liste gelöscht wird, sollen auch C und D wieder leer sein.

Bevor ich deine Lösung hatte, hatte ich immer z.B. an einem Montag die Dropdownliste auf Urlaub gestellt, und sie dann bis Freitag runtergezogen, so dass die komplette Woche den Wert Urlaub hatte. Das gleiche dann in der nächsten Woche. Im Modul1 hatte ich dann diesen Code, der dafür sorgte, dass C und D dann immer 00:00 war, oder eben leer:

Sub HandleChangeForSheet(ByVal Target As Range, ByVal ws As Worksheet)
Dim rng As Range
Dim zelle As Range
' Prüfen, ob die Änderung in Spalte B (Spalte 2) erfolgt ist
Set rng = Intersect(Target, ws.Columns(2))
If rng Is Nothing Then Exit Sub
Application.EnableEvents = False
On Error GoTo 0
For Each zelle In rng
If zelle.Value = "Urlaub" Or zelle.Value = "Feiertag" Or zelle.Value = "Krankheit" Or zelle.Value = "Überstd.-Abb." Or zelle.Value = "Schulung" Then
' Setze C und D der gleichen Zeile auf 00:00, wenn Text in B ausgewählt ist bzw. leer
ws.Cells(zelle.Row, 3).Value = "00:00"
ws.Cells(zelle.Row, 4).Value = "00:00"
Else
' Optional: Falls andere Werte zukünftig erlaubt, C und D ggf. leeren
ws.Cells(zelle.Row, 3).Value = ""
ws.Cells(zelle.Row, 4).Value = ""
End If
Next zelle
Application.EnableEvents = True
End Sub

Den hatte ich im Tabellenblatt aufgerufen:
Private Sub Worksheet_Change(ByVal Target As Range)
Call HandleChangeForSheet(Target, Me)
End Sub

Das funktioniert jetzt nicht mehr hast du noch eine Idee, wie ich das mit deinem Code lösen kann?
Folgenachrichten
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.