AW: Ein Ansatz und eine Anregung...
21.07.2015 12:52:16
Michael
Markus,
... Als Anregung für das nächste Mal: Gib möglichst alle bekannten Umstände und Fakten in Bezug auf Deine Frage gleich im ersten Beitrag an - in diesem Fall hätte es Dich nur einen Satz gekostet ("im betroffenen Bereich ist bereits eine Datenüberprüfung mit Liste hinterlegt"). Somit hätten Rudi und ich nicht erst Ansätze veröffentlichen müssen, die sowieso nicht gebraucht werden; und Du ersparst Dir einige Beiträge, wenn Du dann gleich die Lösung erhältst, die Du brauchen kannst.
Zurück zu Deinem Problem, hier ein Ansatz von mir:
Entsperre zunächst alle Zellen im betroffenen Tabellenblatt - dann VBA:
1) mit Öffnen der Mappe wird das betroffene Tabellenblatt geschützt (nur für den User, nicht für VBA),
2) und der Eingabe-Bereich [B7:K16] gesperrt.
3) Wählt der Benutzer Zellen im Eingabebereich [B7:K16] wird überprüft ob im Bereich der Pflichtfelder [B17:B19] Eingaben (genau 3 in diesem Fall) vorhanden sind
3a) Keine Eingaben: Eine MsgBox wird angezeigt
3b) Eingaben vollständig: Der Eingabebereich wird entsperrt und der Benutzer kann die Dropdownlisten verwenden.
Dazu in das Code-Modul der Arbeitsmappe:
Private Sub Workbook_Open()
Dim Eingabe As Range: Set Eingabe = Worksheets("Tabelle1").Range("B7:K16")
Worksheets("Tabelle1").Protect Password:="test", userinterfaceonly:=True
Eingabe.Locked = True
End Sub
Und in das Code-Modul der betroffenen Tabelle:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Eingabe As Range: Set Eingabe = Tabelle1.Range("B7:K16")
Dim Pflicht As Range: Set Pflicht = Tabelle1.Range("B17:B19")
If Not Intersect(Eingabe, Target) Is Nothing Then
If WorksheetFunction.CountA(Pflicht) = 3 Then
Eingabe.Locked = False
Else: MsgBox "Bitte zuerst F15:F17 ausfüllen!"
End If
End If
End Sub
[Tabelle1] muss natürlich mit Deinem Blattnamen ersetzt werden. Zu Beachten ist auch, dass das Ganze nicht "rückwirkend" funktioniert: D.h. wird der Bereich entsperrt, weil alle Pflichteingaben vorhanden sind, und der User schreibt Daten in den Eingabebereich löscht aber dann einen Teil aus dem Pflichtbereich, dann bleiben die bereits im Eingabebereich vorgenommenen Daten erhalten OHNE Warnung!
LG
Michael