asterix2
Goto Top

Wenn Schriftfarbe rot dann Zelle gesperrt

Hallo,
nach x Stunden Google Suche wende ich mich an euch. Eigentlich ist mein Problem schnell erklärt.

Wenn die Schriftfarbe in einer Zelle rot ist, so soll diese gesperrt sein. Das war es dann eigentlich auch schon.
Ich hoffe ihr habt eine Lösung für mich. Das IE kennt keine.
Gruß Asterix2

Content-Key: 196605

Url: https://administrator.de/contentid/196605

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: 106543
106543 08.01.2013 aktualisiert um 12:14:00 Uhr
Goto Top
Hallo,

hast du es schon mit VBS probiert ?
hier ein kleiner Code-Schnipsel, der dir vll. weiterhilft face-smile
Sub Workbook_Open
if (Zelle.Font.ColorIndex = 3)
then
{
[Sperrbefehl fällt mir leider grade nicht ein]
}
end if
End Sub
Sorry kanns grade nicht richtig ausrobieren von daher keine Garantie auf Funktion face-smile

Grüße
Exze
Mitglied: Asterix2
Asterix2 08.01.2013 um 12:55:25 Uhr
Goto Top
Hallo Exze
klappt leider nicht. Hab es mal so probiert:
Sub Workbook_Open()
If (Zelle.Font.ColorIndex = 3) Then
.Cells.Locked = True
End If
End Sub
Fehlermeldung: Unzulässiger oder nicht ausreichend definierter Verweis.
Gruß Asterix2
Mitglied: colinardo
colinardo 08.01.2013 aktualisiert um 13:03:43 Uhr
Goto Top
So einfach wie Exzellius das schreibt ist es aber nicht.
Folgender Code reagiert sobald das aktive Blatt neu berechnet wird. Dann musst du noch festlegen in welchem Zellen-Bereich du die Sperrung anwenden möchtest [Code-Zeile 4] (Einfach auf alle Zellen anwenden wäre overkill und würde die Anwendung extrem verlangsamen).
Danach prüft das Script die Zelle auf die Farbe Rot. Wenn diese Rot ist muss überprüft werden ob das aktuelle Blatt gerade geschützt ist, sonst kann der Code am Blatt nichts ändern. Ist es geschützt wird für die Änderung der Sperrung kurz der Blattschutz aufgehoben und danach wieder gesetzt. Der Methode Protect können mehrere Optionen angehängt werden, je nachdem was man bei geschütztem Blatt den Benutzern noch erlauben möchte. Die Optionen dafür kannst du mit einem testweise aufgenommenen Makro herausfinden.

Private Sub Worksheet_Calculate()
Dim a As Range
Dim c As Range
Set a = ActiveSheet.Range("A1:B2")  
For Each c In a.Cells
     If c.Font.ColorIndex = 3 Then
        If ActiveSheet.ProtectionMode = False Then
            c.Locked = True
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
        Else
            ActiveSheet.Unprotect
            c.Locked = True
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
        End If
    End If
Next
End Sub

Grüße Uwe
Mitglied: 106543
106543 08.01.2013 aktualisiert um 13:11:14 Uhr
Goto Top
Zitat von @Asterix2:
Hallo Exze
klappt leider nicht. Hab es mal so probiert:
Sub Workbook_Open()
If (Zelle.Font.ColorIndex = 3) Then
.Cells.Locked = True
End If
End Sub
Fehlermeldung: Unzulässiger oder nicht ausreichend definierter Verweis.
Gruß Asterix2

Hi,

ja kein Wunder face-big-smile das war ja nur ein Code-Schnipsel und kein fertig formatierter und ausgetesteter Code. Sollte nur einen kleinen Denkanstoß bieten face-smile
Was Colinardo geschrieben hat, scheint da schon eher ausgereift, bzw. kann da der Code natürlich auch nicht einfach kopiert, sondern muss vorher noch angepasst werden face-smile

Grüße
Exze

EDIT: all unser Code richtet sich auf Microsoft Office Excel aus, wenn du da was anderes verwendest, musst du uns das sagen face-smile
Mitglied: Asterix2
Asterix2 08.01.2013 um 13:21:49 Uhr
Goto Top
Hallo colinardo
Ich hab dein Code mal auf "Doppelklick gesetzt.
Leider sperrt er mir die ganze Tabelle.
Ich möchte aber nur die Zelle sperren, welche nach dem Doppelklick die Schriftfarbe auf rot ändert.
Private Sub Doppelklick()
Dim a As Range
Dim c As Range
Set a = ActiveSheet.Range("A1:B2")
For Each c In a.Cells
If c.Font.ColorIndex = 3 Then
If ActiveSheet.ProtectionMode = False Then
c.Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
Else
ActiveSheet.Unprotect
c.Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
End If
End If
Next
End Sub
Mitglied: colinardo
colinardo 08.01.2013 aktualisiert um 13:31:54 Uhr
Goto Top
Dann hast du das Prinzip Blattschutz noch nicht ganz verstanden. Du musst vorher bei den Zellen die der Benutzer bearbeiten können soll, in den Zelleigenschaften (STRG-1) auf dem letzten Tab den Schutz der Zelle deaktivieren...
Mitglied: Asterix2
Asterix2 08.01.2013 um 13:30:43 Uhr
Goto Top
Ganz ehrlich, Jepp. Hab mich mal ganz kurz damit beschäftigt. Ich gebe dir recht.