faab58
Goto Top

Zelle einfärben - aber wie richtig ?

Hallo an alle,

ich hoffe irgendwer hat eine idee, was ich verbessern kann

Ich habe in "Tabelle1" in den Bereichen

("D19:P25"); ("D32:P38") und ("D45:P51") Werte zu erfassen

Damit ich mich etwas besser auf der Seite orientieren kann, soll die jeweilige aktive Zelle statt weiß in hellgrau unterlegt sein.

Das klappt gut mit diesem Code

Private Sub worksheet_selectionchange(ByVal Target As Excel.Range)
On Error Resume Next
Lastcell.Interior.ColorIndex = farbe
farbe = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 15 '(grau)  
Set Lastcell = Target
End Sub

Leider bekomme ich imme irgendeine Zelle in Grau eingefärbt, wenn ich das Blatt öffne.
Und zwar genau jenes, an dem ich das Blatt verlassen habe.

Wie kann ich beim Blattaufruf die oben genannten Bereiche auf weiß setzen.
Ich habe es mit dem Makrorekorder versucht, bekomme es aber nicht zum laufen.

Punkt 2 meines Anliegens
Alle Zellen, die oben nicht genannt werden, sollen gesperrt werden ausser ("D5") und ("P5")


Für jede Idee dankbar

Lieben Gruß an Euch

Content-Key: 263721

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

Printed on: April 23, 2024 at 07:04 o'clock

Member: eisbein
eisbein Feb 18, 2015 at 05:36:10 (UTC)
Goto Top
Guten Morgen!

Wenn der Bereich fix ist und nicht variabel, warum färbst du die Zellen nicht mittels Hintergrundfarbe?
Formatierungen aufgrund des Zellinhaltes machst du am besten mit der "bedingten Formatierung".

Zu 2:

Schau dir im Kontextmenü einer Zelle (Zelle formatieren ... - Reiter Schutz) die Optionen an. Wenn Gesperrt aktiviert ist, ist dieses Zelle bei aktiven Blattschutz gesperrt, wenn nicht, kann sie bearbeitet werden.
Standardmäßig sind alle Zellen als gesperrt markiert.
Blattschutz kann im Menü "Überprüfen" - Blatt schützen bzw. Arbeitsmappe schützen aktiviert / deaktiviert werden. (bei Excel 2007)

Gruß
Eisbein
Member: Meierjo
Meierjo Feb 18, 2015 at 06:33:14 (UTC)
Goto Top
Hallo


Leider bekomme ich imme irgendeine Zelle in Grau eingefärbt, wenn ich das Blatt öffne.
Und zwar genau jenes, an dem ich das Blatt verlassen habe.
Wie kann ich beim Blattaufruf die oben genannten Bereiche auf weiß setzen.

Könntest du zB mit einem Auto_start lösen, indem die aktive Zelle beim starten der Tabelle mit Farbe "automatisch" hinterlegt wird
Folgenden Code in ein allgemeines Modul

Sub auto_open()
    'Blatt entsperren  
    ActiveSheet.Unprotect
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub


Punkt 2 meines Anliegens
Alle Zellen, die oben nicht genannt werden, sollen gesperrt werden ausser ("D5") und ("P5")

Per Default sind alle Zellen "gesperrt". Merkt man aber normalerweise nicht, wenn der Blattschutz nicht aktiv ist
Mit folgendem Code werden die gewünschten Zellen "entsperrt", und dann der Blattschutz aktiviert

Sub sperren()

    Range("D5,P5,D19:P25,D32:P38,D45:P51").Select  
    Selection.Locked = False
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub


Gruss Urs
Mitglied: 116301
116301 Feb 18, 2015 at 09:13:08 (UTC)
Goto Top
Hallo FAAB58!

Meierjo hat ja schon Wege aufgezeigt, wie man das umsetzen kann, von daher alternativ noch folgende Lösung:

Diesen Code (Zellen sperren) in 'DieseArbeitsmappe' einfügen
'Hintergrundfarbe der aktiven Zelle auf Standard-Farbe zurücksetzen  
'Sheet sperren (ohne Passwort) und nur entsperrte Zellen zum selektieren freigeben  

Private Sub Workbook_Open()
    With ActiveSheet
         Application.EnableEvents = False
        .Unprotect
        .Range("D5,P5,D19:P25,D32:P38,D45:P51").Locked = False  
        .Protect "", True, True, True, True  
        .EnableSelection = xlUnlockedCells
         Application.EnableEvents = True
    End With
    ActiveCell.Interior.ColorIndex = xlNone
End Sub

Diesen Code (Hintergrundfarbe ändern) in die Tabelle einfügen
Private LastCell As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Not LastCell Is Nothing Then
        LastCell.Interior.ColorIndex = xlNone
    End If
    
    Target.Interior.ColorIndex = 15 '(grau)  
    Set LastCell = Target
End Sub

Grüße Dieter