Excel: Geschützte Feld

Gute Tag

Ich habe eine Excel-Tabelle für mathematische Übungen erstellt. Diese Tabelle ist mit Ausnahme des Feldes G2 geschützt. Die Antwort muss in dieses Feld G2 eingegeben werden.
Nun möchte ich, dass das G2-Feld nach Eingabe einer Antwort ebenfalls geschützt wird.
Wie kann ich das beheben?
Vielen Dank für Hilfe.

Freundliche Grüsse

Francis

Hallo Francis

Damit wir von gleichen reden:
Diese Tabelle ist mit Ausnahme des Feldes G2 geschützt.
Das heisst für mich: Unter „Zellen formatieren“ sind alle Zellen gesperrt ausser G2.
Das Tabellenblatt ist geschützt.
Nach einer Eingabe in G2 soll auch diese Zelle gesperrt sein.

Wenn dem so ist, meine ich: Ohne VBA lässt sich das nicht machen. – Hier das entsprechende Makro. Im VBA-Explorer muss es unter Microsoft Excel Objekte in der entsprechenden Tabelle eingegeben werden.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$2" Then
    ActiveSheet.Unprotect
    Target.Offset(0, 0).Select
        Selection.Locked = True
    ActiveSheet.Protect
End If
End Sub

Damit Du (übungshalber) nicht jedes Mal recht umständlich die Sperrung von G2 wieder aufheben musst, hier ein zweiten Makro. Dieses Makro musst Du in einem Modul eingeben. Und darfst es niemandem verraten :wink:

Private Sub G2Unlocked()
    ActiveSheet.Unprotect
    Range("G2").Locked = False
    ActiveSheet.Protect
End Sub

Ich hoffe, das hilft Dir. Grüsse Niclaus

Hallo Niclaus

Vielen Dank für Deine Antwort.
Das Problem ist genau so, wie Du es beschrieben hast.
Ich habe es mit Deinem Makro versucht, aber es funktioniert nicht!
Sub privat()

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = „$G$2“ Then

ActiveSheet.Unprotect

Target.Offset(0, 0).Select

    Selection.Locked = True

ActiveSheet.Protect

End If

End Sub

Ich habe wahrscheinlich einen Fehler gemacht!!!

Vielen Dank für Deine Antwort.
Grüsse Francis

Salü Francis
An der Excel-Version wird es ja kaum liegen.

a) In Deiner Antwort schreibst Du:
Sub privat()
Private Sub Worksheet_Change(ByVal Target As Range)
Woher hast Du dieses Sub privat() ?

b) Hast Du die Makros auch am richtigen Ort eingefügt?

image
Private Sub Worksheet_Change(ByVal Target As Range)
unter Tabelle1 (oder wie sie bei Dir auch immer heissen mag)

Private Sub G2Unlocked()
in einem beliebigen Modul - aber nicht in einer Tabelle

Irgendwie werden wir das hinkriegen!
Grüsse Niclaus

Hallo Niclaus

a) Ich habe dieses Sub privat() eingefügt!
Ohne dies könnte ich das Makro nicht finden!

b) Wie kann ich dieses Makro an der richtigen Ort einfügen? (unter Tabelle 1)

 Wie füge ich Private Sub G2Unlocked () in einem beliebigen Modul ein?

Entschuldigen all diese Fragen, aber ich glaube, ich bin von den Ereignissen überwältigt :thinking: :unamused:

Grüsse
Francis

Hallo Francis
Wie weit kennst Du Dich denn mit VBA aus?
Mit ALT-F11 gelangst Du in den VBA-Editor. Dort solltest Du ein ähnliches Bild sehen, das ich oben eingefügt habe.
Dort im linken Bereich unter Microsoft Excel Objekte Deine entsprechende Datei doppelklicken. Dann öffnet sich rechts der Makro-Bereich. Hier kopierst Du das ganze Makro „Private Sub Worksheet_Change(ByVal Target As Range)“ rein.

Dann zu den Modulen. Wenn Dir keine Module angezeigt werden: Im leeren linken Bereich mit der Maus ein Rechtsklick und dann Einfügen / Modul.
Das Modul doppelklicken. Es öffnet sich rechts der Makro-Bereich für dieses Modul. Dort kopierst Du das Makro „Private Sub G2Unlocked()“ rein.
Dieses zweite Makro ist, wie ich Dir gesagt habe, eine „Beigabe“. Für Dein ursprüngliches Anliegen ist es nicht nötig!

Ich lade Dir hier meine Datei mit den beiden Makros hoch.
G2_sperren
Das Makro „Private Sub G2Unlocked()“ solltest Du in dieser Datei auch mit der Tastenkombination CTRL-SHIFT-i aufrufen können.

Grüsse Niclaus

Hallo Niclaus

Sorry, das ist mein Fehler. Ich habe das Makro in die falsche Tabelle kopiert.
Nun funktioniert es.
Vielen Dank für Deine wertvolle Hilfe

Ich habe noch zwei Fragen:

  1. Ich möchte die Liste erweitern, z.B. die Antworten auf G2, G4, G6, G8 bis G20, wie soll ich das Makro anpassen?

  2. Ich habe das Makro „Private Sub G2Unlocked()“ in das Modul kopiert.
    Wie kann ich es aktivieren?

Grüsse Francis

Salü Francis
Das freut mich, dass es doch noch klappt!

A) Liste erweitern, z.B. die Antworten auf G2, G4, G6, G8 bis G20

Dazu ein geändertes Makro für die Tabelle:

Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Range("G2, G4, G6, G8:G20"))
If Target Is Nothing Then Exit Sub
    ActiveSheet.Unprotect
    Target.Offset(0, 0).Select
        Selection.Locked = True
    Target.Offset(1, 0).Select
    ActiveSheet.Protect
End Sub

Dann zwei neue bzw. geänderte Makros für das Modul:

Sub G2Unlocked()
    ActiveSheet.Unprotect
    Range("G2, G4, G6, G8:G20").Locked = False
    Range("G2, G4, G6, G8:G20").ClearContents
    Range("G2").Select
    ActiveSheet.Protect
    Call G2Unlocked2
End Sub
Sub G2Unlocked2()
    ActiveSheet.Unprotect
    Range("G2, G4, G6, G8:G20").Locked = False
    ActiveSheet.Protect
End Sub

Damit werden Deine G-Zellen freigegeben und der Inhalt dieser G-Zellen wird gelöscht. Wenn Du das Löschen nicht willst, dann musst Du im Makro „G2Unlocked“ die 3. Zeile mit „ClearContents“ löschen oder deaktivieren. Desgleichen die letzte Zeile: „Call G2Unlocked2“.

B) Makro „Private Sub G2Unlocked()“ … Wie kann ich es aktivieren?

Da gibt es verschiedene Methoden. Du kannst eine Schaltfläche (Button) einfügen und mit dem Makro verknüpfen. Allenfalls mit einem Passwort versehen, damit das nicht jeder Benutzer machen kann.

Andere Variante: Mit einer Tastenkombination. - Einrichten der Tastenkombination:
Tastenkombination ALT-F8 drücken / dort G2Unlocked auswählen (wenn es nicht bereits ausgewählt ist)
Optionen … wählen
Bei Tastenkombination z. B. ein grosses „i“ eingeben. Dann OK und Abbrechen.

image

Wenn Du jetzt im Tabellenblatt die Tastenkombination „CTRL-SHIFT-i“ drückst, wird dieses Makro ausgeführt: Alle Deine G-Zellen sind wieder freigegeben. Der Inhalt Deiner G-Zellen wird gelöscht.

Bei den Tastenkombinationen musst Du aufpassen: Du solltest z. B. nicht ein kleines c eingeben, weil diese Tastenkombination ja fürs Kopieren vorgesehen ist. Und: Wenn sich jemand etwas auskennt mit VBA, dann wird er dahinterkommen. Das zu verhindern ist möglich; dem kannst Du mit Google nachgehen, wenn Du Dich mit VBA etwas auskennst.

Grüsse Niclaus

PS Wenn Du mehr wissen musst über VBA, dann treffen wir uns nach Corona im Hauptbahnhof in Zürich! Einverstanden? :sunglasses:

Hallo Niclaus

Ich habe Deine Anweisungen befolgt, aber wenn ich die Tastenkombination „CTRL-SHIFT-i“ drücke, macht ein Debuggen (siehe Bild).

Wo ist der Fehler?

Grüsse Francis

PS Ich finde eine toll Idee, sich in normalen Zeiten in Zürich zu treffen! :relaxed:

Hallo Francis
Zuerst meine Frage: Funktioniert denn der Teil
„Private Sub Worksheet_Change(ByVal Target As Range)“?
Werden Deine G-Zellen gesperrt?

Dann das Problem mit der Tastenkombination. Eingerichtet ist sie wahrscheinlich richtig, sonst würde es kein Debuggen geben.
Eine ganz blöde Frage zur gelb markierten Zeile:

Range("G2, G4, G6, G8:G20").Locked = False

Hast Du da ganz normale Anführungszeichen ( " ) benutzt? - Nicht etwa zwei Einzel-Apostroph-Zeichen ( ’ ’ )?
Wenn diese Zeichen richtig sind, kann ich mir den Fehler nicht erklären. Kannst Du mir Deine Datei hochladen, damit ich sie anschauen kann? - Ich schicke Dir eine persönliche WWW-Nachricht mit meiner Email-Adresse, falls es Probleme mit dem Hochladen gibt.
Grüsse Niclaus

Hallo Niclaus
Ja der Teil „Private Sub Worksheet_Change(ByVal Target As Range)“ funktioniert.
Ich habe ganz normale Anführungszeichen ( " ) benutzt.

Ich kann die Datei nicht hochladen, ich sende sie per E-Mail.
Grüsse Francis

Hallo Francis
Ich habe die Datei erhalten. Du arbeitest mit verbundenen Zellen. Das macht’s etwas umständlicher.
Grüsse Niclaus

Hallo Niclaus

Du bist einfach genial.

Es funktioniert wunderbar.

Vielen Dank für Deine wertvolle Hilfe.

Grüsse

Francis

Dieses Thema wurde automatisch 36 Stunden nach der letzten Antwort geschlossen. Es sind keine neuen Nachrichten mehr erlaubt.