Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
732to736
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
732to736
732to736
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellschutz per VBA in freigegebener Datei

Zellschutz per VBA in freigegebener Datei
21.02.2006 14:23:34
Andi
Hallo Forum-User,
ich stehe wieder mal vor Rätseln und erhoffe mir über diesen Weg Hilfe.
Ich möchte, dass z.B. nur "GELB" hinterlegte Zellen zur Eingabe zulässig sind; alle anderen Zellen sollen gesperrt sein. WICHTIG dabei ist, dass ich auf Bordmittel von Excel (sprich "Blattschutz") verzichten muss, da das ganze in einer freigegebenen Arbeitsmappe stattfinden soll. Nur so kann ich z.B. auch Gruppierungen etc. ermöglichen.
Danke schon mal im voraus,
Gruß Andi

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 14:37:09
Andi
Hi,
folgendes ins Modul "DieseArbeitsmappe":

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
If Target.Interior.ColorIndex <> 36 Then Application.Undo
Application.EnableEvents = True
End Sub

36 is der Colorindex für Blass-Gelb; Du kannst Dir natürlich auch jeden anderen Index aussuchen.
Schönen Gruß,
Andi
damit hier keiner verwirrt ist... :-)
21.02.2006 14:38:46
Andi
Dies hier ist kein Selbstgespräch; der Frager und ich sind zwei unterschiedliche Andis...
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 15:15:58
Andi
Hallo Namensvetter :-),
schönen dank für deinen Tipp - hat soweit auch prima funktioniert bis auf eine Kleinigkeit. Wenn ich z.B. mehrere "graue und somit geschützte" Zellen gelcihzeitig markiere, diese ausschneide und an anderer Stelle (in gleb markierten Bereichen) einfüge, dann funktioniert das ganze nicht mehr.
Hast du hierfür auch noch einen Tipp.
Dankle im voraus,
Andi (der 1.)
Anzeige
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 15:27:43
Andi
Hi,
das Problem mit mehr als einer Zelle kann man so lösen:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range
Application.EnableEvents = False
For Each c In Range(Target.Address)
If c.Interior.ColorIndex <> 36 Then Application.Undo
Next c
Application.EnableEvents = True
End Sub

Beim Einfügen bleibt aber ein Problem:
Das Makro läuft erst nach dem Einfügen; sprich, wenn Du normal einfügst, dann wird die Zelle grau, zur Laufzeit ist eine Veränderung also schon nicht mehr erlaubt, und das Einfügen wird rückgängig gemacht. Nach außen sieht das so aus als wäre gar nix passiert.
Dies kann man imho ohne weiteres nur umgehen, wenn man über 'Rechtsklick, Inhalte einfügen, Werte' einfügt.
Schönen Gruß,
Andi
Anzeige
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 15:33:17
Andi
Hallo nochmals,
sorry, dass ich nochmals nerven muss - jetzt funktioniert aber gar' nix' mehr. Weder die erste noch die Zweite Variante. Es scheint mir, dass Excel das Makro erst gar nicht ausführt?
Grüße,
Andi
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 15:39:13
Andi
Hi,
bei mir geht's.
Hast Du meinen Hinweis bezüglich des einfügens kopierter Zellen beachtet?
Oder bist Du vielleicht irgendwie in den Entwurfsmodul geraten?
Schönen Gruß,
Andi
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 16:01:32
Andi
Hello again,
Nochmals vielen dank. Es funzt jetzt zwar wieder, aber leider noch nicht so 100%ig. Es gibt noch zuviele Möglichkeiten um den Schutz zu umgehen. Z.b. kann ich graue Zellen einfach gelb markieren - dann wäre der Schutz völlig ausgehebelt.
Gibt es nicht evtl. ein Ereignis, das VOR der aktualisierung einer Zelle abläuft -
dann könnte man bereits im Vorfeld diverse Zugriffe abfangen?
Nochmals vielen dank im voraus,
Andi
Anzeige
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 16:21:26
Andi
Hi,
Du könntest auch das Selection_Change-Ereignis verwenden:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range
For Each c In Range(Target.Address)
If c.Interior.ColorIndex <> 36 Then Sh.Range("A1").Select
Next c
End Sub

Dann können nur noch gelbe Zellen überhaupt ausgewählt werden, wenn eine andere ausgewählt wird, dann wird automatisch A1 im entsprechenden Blatt angesprungen (das kannst Du natürlich ändern, nur gelb muss diese bestimmte Zelle sein).
Ich fürchte nur, dass das auch nicht das ist, was Du suchst; mit nicht-gelben Zellen kann man dann nämlich gar nix mehr machen, auch nicht mehr kopieren etc.
Zwischen Selection_Change und Change gbit's imho nix.
Ansonsten fiele mir nur noch ein, die entsprechenen Zellen direkt, also über ihre Adresse zu überwachen; wenn das viele nicht zusammenhängende Bereiche sind, is das aber recht umständlich. Sag einfach bescheid, wenn Du in dieser Richtung noch a bisserl weiterbasteln willst.
Schönen Gruß,
Andi
Anzeige
AW: Zellschutz per VBA in freigegebener Datei
21.02.2006 16:30:56
Andi
Hallo Andi,
nochmals vielen dank :-)
ich denke damit kann ich erstmal leben. Wenn nicht werde ich mich nochmal an dich (das Forum) wenden.
Grüße,
Andi
Gern geschehen... (mt)
21.02.2006 16:39:22
Andi
Hi,
schön, dass ich helfen konnte.
Abschliessend noch folgender Hinweis, weil ich ja den ganzen Hintergrund nicht kenne:
das alles funktioniert nur, wenn die Zell-Farbe durch normale Formatierung (manuell oder per VBA) zustande kommt. Bei bedingter Formatierung geht's nimmer.
Die Zell-Farbe bei bedingter Formatierung auszulesen is ziemlich kompliziert, iA isses da einfacher, die Bedingungen direkt abzufragen.
Dies nur der Vollständigkeit wegen.
Schönen Gruß,
Andi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige