1.4k Aufrufe
Gefragt in Tabellenkalkulation von mimadel Mitglied (117 Punkte)
Moin,

mich umtreibt wieder mal eine "unlösbare" Aufgabe:

Ich habe ein Formular auf Excel2003 entworfen.
Das Formular insgesamt ist geschützt (Haken "gesperrt" aktiviert).

Einzelne Zellen sind natürlich nicht gesperrt, da hier Eingaben möglich sein sollen. Daneben läuft per Makro eine Abfrage, die bei Nichtbefüllung von Pflichtfeldern ein Wasserzeichen "unvollständig" erzeugt. Hierfür wird in der Worksheet_SelectionChange-Abfrage der Blattschutz deaktiviert, das Wasserzeichen eingefügt / gelöscht, der Blattschutz wieder aktiviert und fertig.

Eine (Eingabe)Zelle soll nun aber zwanghaft mit einer 10-stelligen Zahl belegt werden, d.h. ich habe die Gültigkeit über Menüleiste "Daten/Gültigkeit" entsprechend begrenzt und Hilfetext aktiviert.

Allerdings ist die Gültigkeitsbegrenzung wieder raus, wenn ich den Blattschutz aktiviere. Im o.a. Change-Makro nutze ich derzeit lediglich

Sheets("Seite 1").Unprotect Password:="xxx" bzw. das Pendant
Sheets("Seite 1").protect Password:="xxx"

Muss ich an dieser Stelle noch Ergänzung(en) vorschreiben, damit die Gültigkeit erhalten bleibt? Oder liegt es gar nicht daran? Kann mir jemand Hilfestellung geben, wie die Gültigkeitsbeschränkung einer Zelle erhalten bleibt?

Ich kann leider den bisherigen Code für die Change-Abfragen nicht posten, weil der irre lang ist (Pflichtfelder werden einzeln durchlaufen und bei Nichtbelegung farblich unterlegt etc.).

Danke für jeden Tipp!

3 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

ergänze deinen code mit der zeile vor der protect Anweisung

gruss nighty

bei diesem Beispiel ist A1 + D3 weiterhin benutzbar

Worksheets(1).Range("A1", "D3").Locked = False
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich habe hier zwar kein Excel 2003 mehr, aber allein durch das Aufheben und das Neusetzen des Blattschutzes dürfte die Gültigkeitsprüfung nicht aus der Zelle verschwinden. Bei meinem Excel 2007 bleibt die Gültigkeitsprüfung jedenfalls erhalten.

Ich nehme mal eher an, dass das mit dem Setzen und Löschen des Wasserzeichens zusammenhängt. Wird hier ggf. die Gültigkeitsprüfung mit gelöscht?
Ansonsten kannst du ja vor dem Aktivieren des Blattschutzes per VBA die Gültigkeitsprüfung für die betreffende Zelle aktivieren:

Beispiel für Zelle G27

With Range("G27").Validation
.Delete
.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
Operator:=xlEqual, Formula1:="10"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Fehler"
.InputMessage = ""
.ErrorMessage = "Sie müssen genau 10 Zeichen eingeben"
.ShowInput = True
.ShowError = True
End With


Falls du eine Beispieltabelle mit mit dem Code hochladen willst, kannst du das bei z.B. hier machen und den entsprechenden Download-Link posten.

Gruß

M.O.
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Vielen Dank euch beiden!

Der Vorschlag von M.O. hat mein Problem gelöst, vielen Dank!
...