Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: über Farbe der Zelle Zellen dynamisch sperren

über Farbe der Zelle Zellen dynamisch sperren
11.12.2008 09:18:42
Sucher
Hallo liebes Forum,
kann mir hier im Forum eine/einer weiterhelfen.
Das Makro soll wenn Colerindex = 2 Zellen dynamisch entsperren alle anderen Zell- Farben sollen gesperrt werden!
Ist Situation:
Ich habe mit Excel einen Rechner gebastelt der von anderen Anwendern benutzt werden soll.
Damit diese Anwender das Programm möglichst einfach benutzen können habe ich die 10 Eingabefelder (nicht gesperrt) weiß eingefärbt. Ausserdem sind drei Funktionsfelder (nicht gesperrt) in den Rechner eingefügt. Wenn jetzt der Anwender in einem dieser Funktionsfelder (Ausgabebereich AC9) ein Kind auswählt, werden durch eine bedingte Formatierung zwei weitere Zelle weiß, bei zwei Kindern werden vier Felder weiß und soweiter bis max. fünf Kinder.
Was soll durch ein Makro automatisch (dynamisch) erreicht werden:
Der Anwender soll nur in den weißen Zellen und in den Funktionsfeldern Eingaben machen können, der Rest soll für den Anwender gesperrt werden oder gesperrt bleiben.
Da aber je nach Auswahl in dem einen Funktionsfeld die Anzahl der weißen Zellen variabel ist sollen die Zellen auf Grund Ihrer Farbe dynamisch gesperrt oder entsperrt werden.
Beispiel:
Eingabefelder B1 / M16 / N17 / usw......... insgesamt 10 Eingabefelder und die drei Funktionsfelder sind beim Einstieg in den Rechner immer entsperrt.
Durch Eingabe im Funktionsfeld (Auswertungszelle AC9) 1 Kind stehen dem Anwender dann 12 Eingabezellen (nicht gesperrt) zur Verfügung
Beispiel 2:
Eingabefelder B1 / M16 / N17 / usw......... insgesamt 10 Eingabefelder und die drei Funktionsfelder sind beim Einstieg in den Rechner immer entsperrt.
Durch Eingabe im Funktionsfeld (Auswertungszelle AC9) 2 Kinder stehen dem Anwender dann 14 Eingabezellen (nicht gesperrt) zur Verfügung.
P.S. wenn möglich soll die dynamische Sperrung bzw. Entsperrung ohne erneute Passwortabfrage erfolgen!
Ich hoffe diese Funktion kann per Makro überhaupt generiert werden!
Schon jetzt vielen Dank an Euch!
Gruß
Sucher
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: über Farbe der Zelle Zellen dynamisch sperren
11.12.2008 09:36:29
Luschi
Hallo Sucher,
warum erwähnst Du nicht, daß über dieses Thema schon mal ausführlich debattiert wurde.
Und warum befolgst Du nicht den Rat von Beate: https://www.herber.de/forum/messages/1031901.html
Ohne Beispieldatei und konstanten Bedingungen wird wohl kaum jemand bereit sein, hier noch Kraft und Zeit zu investieren.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: über Farbe der Zelle Zellen dynamisch sperren
11.12.2008 09:43:58
gerwas
Hallo
kopiere folgendes macro in das Klassenmodul der entprehenden Tabelle und gib den Bereich an, der betroffen ist.
For Each Zelle in Range("A1:c32") z.B.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect
For Each zelle In ActiveSheet.Cells 'hier den bereich angeben, der betroffen ist
If zelle.Interior.ColorIndex = 2 Then
zelle.Locked = False
Else
zelle.Locked = True
End If
Next
ActiveSheet.Protect
End Sub


Gruß gerwas

Anzeige
so hab jetzt die Datei hochgeladen
11.12.2008 15:04:00
Sucher
Hallo Leute,
ich hab jetzt die Datei zum besseren Verständnis mit einer zusätzlichen Beschreibung hochgeladen ich hoffe Ihr könnt euch jetzt entsprechend besser hineindenken oder es sogar gleich anhand dieser Datei ausprobieren.
https://www.herber.de/bbs/user/57549.xls
Passwort ist: Schutz
P.S. Danke an gerwas aber das Makro hat nicht funktioniert bzw. habe ich beim einfügen trotz der genauen Beschreibung noch was falsch gemacht.
Danke an Euch und verzeit einem Neuen bitte die Fehler die er noch in diesem Forum macht!
Anzeige
so hab jetzt die Datei hochgeladen
11.12.2008 15:04:55
Sucher
Hallo Leute,
ich hab jetzt die Datei zum besseren Verständnis mit einer zusätzlichen Beschreibung hochgeladen ich hoffe Ihr könnt euch jetzt entsprechend besser hineindenken oder es sogar gleich anhand dieser Datei ausprobieren.
https://www.herber.de/bbs/user/57549.xls
Passwort ist: Schutz
P.S. Danke an gerwas aber das Makro hat nicht funktioniert bzw. habe ich beim einfügen trotz der genauen Beschreibung noch was falsch gemacht.
Danke an Euch und verzeit einem Neuen bitte die Fehler die er noch in diesem Forum macht!
Anzeige
AW: so hab jetzt die Datei hochgeladen
14.12.2008 17:44:00
Lars
Hi,
machs nicht über die farbe sondern über den Listindex der Comboboxen.
mfg Lars
wie kann man das Unsetzen Lars
14.12.2008 22:20:50
Sucher
Hallo Lars,
danke für den Tipp, aber leider bin ich im Bereich der Makros nicht so bewandert.
Wie kann man das umsetzen?
Es wäre Toll wenn Du oder einer der Anderen hier im Forum mir dabei weiterhelfen könnten!
Schon jetzt vielen Dank!
evtl. kann ich ja mein Program ja doch noch so anpassen, dass Zellen die nicht beschrieben werden sollen gesperrt werden und die die sich auf Grund von Eingaben in den Funktionsfeldern öffnen beschrieben werden können!
Gruß
Sucher
Anzeige
AW: wie kann man das Unsetzen Lars
14.12.2008 22:28:00
Lars
Hi,
bring dein Werk mal zuerst von der Bedienlogik auf die Reihe.
Man kann z.B. auswählen verh. kein Kind und dann doch 5 Kinder wählen.
Die Optik ist vorsichtig ausgedrückt besch....
mfg Lars
AW: wie kann man das Unsetzen Lars
14.12.2008 22:42:00
Sucher
Hallo Lars,
mein eigentliches Program sieht ganz anders aus.
Dies ist lediglich eine Beispieldatei bei der ich nur mein Problem zeigen wollte (wurde nur kurz dafür erstellt).
Die Datei soll lediglich darstellen, das Felder hinzukommen oder abgewählt werden und gesperrt oder nicht gesperrt werden sollen je nach Farbe (weiß entsperren andere Farbe sperren).
Schade dass Du dich an unwesentlichen Dingen aufhängst obwohl das eigentliche Problem von mir genau beschrieben wurde.
Ich hoffe das liegt nicht daran, dass Du mir nicht helfen kannst.
Gruß
Sucher
Anzeige
AW: wie kann man das Unsetzen Lars
14.12.2008 22:47:00
Lars
Hi,
wenn die Bedienlogik nicht stimmt, sind alle Bemühungen vergebens.
"...Ich hoffe das liegt nicht daran, dass Du mir nicht helfen kannst...."
Gerade nen Hobbykurs in "Psychologie für Anfänger" absolviert?
mfg Lars
allso doch
14.12.2008 22:53:23
Sucher
Hallo Lars,
ich hab mir schon bei Deiner netten Art mir zu Antworten ("sieht beschissen aus") gedacht dass Du mir nicht helfen kannst!
Da dem ja scheinbar so ist, bitte ich Dich auf mein Problem nicht mehr zu Antworten oder einen konstruktiven Beitrag zu leisten.
Gruß
Sucher
Anzeige
AW: allso doch
14.12.2008 23:00:22
Lars
Hi,
keine Angst, das ist mein letzter Beitrag zu diesem Thema.
Ich kann nur wiederholen, dass zunächst die Logik und die Funktion
stimmen muss, der ganze Komfortschnickschnack, der ja für die eigentliche
Aufgabe unwesentlich ist, kann dann immer noch eingebaut werden.
mfg Lars
Anzeige
AW: über Farbe der Zelle Zellen dynamisch sperren
16.12.2008 13:59:15
gerwas
Hallo Sucher
habe mir die Sache nochmal angesehen. Insbesondere Deine Datei! Das ganze scheitert an der Verwendung vom Colorindex in bedingt formatierten Zellen. Denn der bei Dir immer 2!! Wenn Du jetzt die Zellen sperren willst, mußt Du die Bedingungen auslesen, nicht den Index! Also etwa so für deine Zelle I4
(=WENN(Y9&gt2;"Kind 1";" ")
If Cells(9,25)&gt2 then
Cells(4,9)="Kind 1"
Cells(5,9).UnLocked
Cells(7,9).UnLocked
Else
Cells(4,9)=""
Cells(5,9).Locked
Cells(7,9).Locked
EndIf
...
ActiveSheet.Protect
ActiveSheet.EnableSelection = xlUnlockedCells
...
Ansonsten muß ich Lars rechtgeben ;-)
Mfg und frohes fest
gerwas
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Sperren und Entsperren von Zellen in Excel


Schritt-für-Schritt-Anleitung

Um Zellen in Excel dynamisch zu sperren oder zu entsperren, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  3. Kopiere und füge den folgenden Code ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       ActiveSheet.Unprotect "Schutz" ' Passwort eingeben
       Dim zelle As Range
       For Each zelle In ActiveSheet.Cells
           If zelle.Interior.ColorIndex = 2 Then
               zelle.Locked = False
           Else
               zelle.Locked = True
           End If
       Next zelle
       ActiveSheet.Protect "Schutz"
    End Sub
  4. Schließe den VBA-Editor und teste das Makro in deiner Excel-Datei.

Stelle sicher, dass die Zellen, die du entsperren möchtest, die Farbe mit ColorIndex = 2 haben (normalerweise Weiß).


Häufige Fehler und Lösungen

  • Das Makro funktioniert nicht:

    • Überprüfe, ob das Passwort korrekt eingegeben wurde.
    • Stelle sicher, dass die Zellen tatsächlich die Farbe haben, die du erwartest.
  • Zellen lassen sich nicht sperren:

    • Achte darauf, dass keine bedingte Formatierung das Zellenformat beeinflusst.
    • Stelle sicher, dass du die Datei mit den richtigen Berechtigungen öffnest.

Alternative Methoden

Wenn du die Zellen nicht über die Farbe, sondern über andere Kriterien sperren möchtest, kannst du auch den ListIndex von ComboBoxen nutzen. Beispiel:

If ComboBox1.ListIndex = 0 Then ' Kein Kind ausgewählt
    Cells(4, 9).Locked = True
Else
    Cells(4, 9).Locked = False
End If

Diese Methode bietet mehr Flexibilität und kann einfacher zu implementieren sein.


Praktische Beispiele

Hier sind einige Beispiele zur Veranschaulichung der Anwendung:

  1. Beispiel für die Verwendung des Makros:

    • Du hast ein Arbeitsblatt mit verschiedenen Zellen, die je nach Auswahl in einem Dropdown-Menü entsperrt werden sollen.
    • Mit dem obigen Code können die Zellen dynamisch gesperrt oder entsperrt werden, basierend auf der Hintergrundfarbe.
  2. Verwendung von Bedingungen:

    • Du kannst auch Bedingungen in Formeln verwenden, um Zellen zu sperren. Zum Beispiel:
    If Cells(9, 25) > 2 Then
       Cells(4, 9).Locked = False
    Else
       Cells(4, 9).Locked = True
    End If

Tipps für Profis

  • Verwende EnableSelection: Mit ActiveSheet.EnableSelection = xlUnlockedCells kannst du festlegen, dass nur entsperrte Zellen ausgewählt werden können.
  • Schutz entfernen: Wenn du mit vielen Makros arbeitest, stelle sicher, dass der Blattschutz nach dem Bearbeiten immer wieder aktiviert wird.
  • Debugging: Nutze Debug.Print in deinem VBA-Code, um Variablenwerte zu überprüfen und Fehler zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich die Farbe einer Zelle ändern? Du kannst die Farbe über die Formatierungsoptionen in Excel oder mit VBA ändern:

Cells(1, 1).Interior.ColorIndex = 2 ' Setzt die Zelle A1 auf Weiß

2. Funktioniert das auch in älteren Excel-Versionen? Ja, das Makro ist in den meisten aktuellen und älteren Excel-Versionen anwendbar, solange VBA unterstützt wird.

3. Kann ich mehrere Zellen gleichzeitig sperren? Ja, du kannst eine Schleife verwenden, um mehrere Zellen gleichzeitig zu sperren oder zu entsperren, wie im obigen Makro gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige