Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Aktuelle Zelle farbig in geschütztem Blatt





Frage

Hallo Habe den Code gefunden der die aktuelle Zelle farbig hervorhebt. Wie kann ich das in einer mit Passwortgeschütztem Blatt machen, denn mit dem Code unten klappt es im geschützten Blatt leider nicht? Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range) Static Zelle As Range If Not Zelle Is Nothing Then Cells.Interior.ColorIndex = xlNone End If Target.Interior.ColorIndex = 4 ' Grün Set Zelle = Target End Sub Danke im voraus Chrigel

Antwort 1 von Guenter

Hallo,

probiere es mal so:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
ActiveSheet.Unprotect password:="Dein Passwort"
Static Zelle As Range
If Not Zelle Is Nothing Then
Cells.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 4 ' Grün
Set Zelle = Target
Worksheets("Tabelle1").Protect password:="Dein Passwort"
End Sub


Gruß
Günter


Antwort 2 von Chrigel

Hoi Günter der Code funktioniert perfekt.
Nur habe ich das Problem wenn ich das Blatt bearbeiten will, wird es gleich wieder geschützt, sobald ich in eine Zelle klicke. Wie kann ich den Code am einfachsten während der Bearbeitungszeit unterbrechen.

Danke
Chrigel

Antwort 3 von Guenter

Hallo,

wenn Du die Zeile

Worksheets("Tabelle1").Protect password:="Dein Passwort"


weg nimmst, beleibt das Blatt ungeschützt. Du kannst dann nach Bearbeitung schützen, z.B. bevor gespeichert, oder gedruckt wird, usw.

Ansonsten verstehe ich nicht so ganz, warum das Blatt geschützt ist, Du aber Eingaben machen willst??

Gruß
Günter

Antwort 4 von Chrigel

Hoi Günter

Sorry dass ich mich erst jetzt wieder melde, aber ich kam einfach nicht mehr dazu.
Die Datei ist eine Telefonliste, und darum muss sie von Zeit zu Zeit auch wieder bearbeitet werden. Ich kann die 2 Zeilen mit dem Hochkomma deaktivieren dann gehts, aber es mutieren 2 bis 3 Leute mit zum Teil wenig PC Erfahrung.

Hoffe dass es doch noch eine einfache Methode um den Code vorübergehend zu deaktivieren.

Gruss
Chrigel

Antwort 5 von coros

Moin,

den Blattschutz kannst Du doch über Extras -> Schutz wieder aufheben. Damit gewährleistet ist, dass nur Du die Datei bearbeiten kannst, setze den Blattschutz mit nachfolgendem Code beim Beenden Deiner Datei.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveSheet.Protect "Hier Dein Paßwort"
End Sub


Beim Beenden der Datei wird nun Dein Blatt wieder Passwortgeschützt.
Den Code musst Du in Diese Arbeitsmappe in der VBA- Umgebung eintragen oder kopieren.

Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.

Antwort 6 von Guenter

Hallo,

ich stimme coros zu. Am einfachsten wird wohl dieses Ereignis-Makro sein.
Andere Möglichkeiten (Ereignisse) kann Du im Editor sehen (z.B. BeforeSave, BeforePrint, Deactivate, usw.)

Gruß
Günter

Antwort 7 von Chrigel

Danke beiden für die Antwort

Es ist richtig dass ich den Blattschutz über "Extras-Schutz" aufheben kann. Nur wenn ich mit dem Cursor in eine Zelle klicke wird automatisch der Code für die farbige aktive Zelle gestartet, und der setzt dann den Blattschutz sofort wieder aktiv.
Die einfachste Methode wird wohl sein, wenn ich die 2 Zeilen im Code während der Bearbeitungszeit deaktiviere.

Danke
Chrigel

Antwort 8 von coros

Moin,

man könnte das so erledigen, in dem man eine Variable erzeugt, die man dann mit dem Makro verknüpft. Diese Variable, kann man z.B. über eine Schaltfläche erzeugen. Sie würde dazu dienen, die Zellenmarkierung für die Dauer der Änderungen in Deiner Tabelle zu deaktivieren. Die Schaltfläche könnte man mit einem Paßwort versehen, so dass nur Du die Zellenmarkierung ausschalten kannst.
Hier mal das Beispiel:

Dein bereits bestehendes Makro in der die Änderung schon eingebaut ist.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
ActiveSheet.Unprotect password:="Dein Passwort"
If AUS_EIN = 1 Then
Static Zelle As Range
If Not Zelle Is Nothing Then
Cells.Interior.ColorIndex = xlNone
End If
Target.Interior.ColorIndex = 4 ' Grün
Set Zelle = Target
Worksheets("Tabelle1").Protect password:="Dein Passwort"
End If
End Sub



Mit diesem Makro wird die Variable erzeugt. Füge ein Modul ein und kopiere das Makro dort hinein
Public AUS_EIN As Integer


Sub an_aus()
If InputBox("Bitte Paßwort eingeben!", "Abfrage") = "Dein Paßwort" Then
   If AUS_EIN = 0 Then
AUS_EIN = 1
ElseIf AUS_EIN = 1 Then
AUS_EIN = 0
End If
   Else
   MsgBox "Sie haben ein falsches Paßwort eingegeben! Bitte wiederholen Sie die Eingabe."
   End If


End Sub



Dann musst Du noch eine Schaltfläche über Steuerelement - Toolbox in Deiner Tabelle erstellen und kopierst nachfolgenden Code in die Schaltfläche.
Private Sub CommandButton1_Click()
Call an_aus
End Sub


So, das wars und so sollte es auch funktionieren.

Ich hoffe, ich konnte Dir weiterhelfen,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar
Dein Problem gelöst hat.

Antwort 9 von Chrigel

Hoi coros

klappt prima.

Besten Dank
Chrigel

Antwort 10 von coros

Moin Chrigel,

freut mich, dass Dir mein Vorschlag gefallen hat und Dich scheinbar auch zufrieden gestellt hat. Danke auch für die Rückmeldung.

MfG,
coros
Jeder macht was er will, keiner macht was er soll aber alle machen mit.