Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
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
Inhaltsverzeichnis

Blattschutz bringt Laufzeitfehler 1004 VBA Modul

Blattschutz bringt Laufzeitfehler 1004 VBA Modul
19.03.2013 21:36:53
Rolf
Hallo Excel Fachleute,
ihr habt mir zweimal sehr geholfen in den letzen Wochen.
Einmal bei dem Problem Bedingte Formatierung von Zellen bei mehr als nur 3 Optionen durch VBA, und zum Zweiten durch eine VBA Programmierung zum setzen und entfernen eines Passwortes über mehrere Tabellenblätter.
Nun habe ich beide zusammengeführt in erst einem Modul und dann getrennt in zwei Modulen.
Nun zum Problem. Um das Handling zu vereinfachen. Habe ich zwei „Wordart“ in der ersten Tabelle eingebaut. Einmal „Blattschutz setzen“ und einmal Blattschutz löschen“ und habe ihnen entsprechend die Makros zugewiesen.
Das automatische Einfärben der Zellen erfolgt lediglich in einer Spalte einiger Datenblätter, wenn man gewisse Daten eingibt. Also Zeichen UR und die Zelle färbt sich entsprechend der Einfärbung die in Tabellenblatt Legende steht. Funktioniert super, bis…..ich den Blattschutz setze.
Wenn ich über alle Tabellen einen Blattschutz gesetzt habe, kommt nun die Meldung
„Laufzeitfehler 1004 - Die ColorIndex-Eigenschaft des Interior-Objektes kann nicht festgelegt werden.“
Dann habe ich nur die Optionen - BEENDEN Debuggen und Hilfe.
Wenn ich auf debuggen gehe, geht der Hinweis ins Modul 2
Zum Eintrag….
rngBereich.Interior.ColorIndex = xlNone
Und hier komme ich nicht weiter. Was kann man tun, damit die VBA Formatierung ach funktioniert wenn die VBA Schutz gesetzt ist?
Ich würde mich sehr über eure Hilfe freuen.
Zum besseren Verständnis lade ich euch eine Testdatei hoch. Musste sie aber wegen der 300 KB sehr verkleinern, bitte nicht wundern.
Hier findet sie hier:
https://www.herber.de/bbs/user/84460.xls
Viele Grüße Rolf

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz bringt Laufzeitfehler 1004 VBA Modul
19.03.2013 21:44:51
mumpel
Hallo!
Erst Blattschutz aufheben (ThisWorkbook.Sheets("Tabelle1").Unprotect "Kennwort"), dann Zellen färben und zum Schluß Blattschutz wieder setzen (ThiSWorkbook.Sheets("Tabelle1").Protect "Kennwort"). Beispiele im Archiv oder per Google.
Gruß, René

AW: Blattschutz bringt Laufzeitfehler 1004 VBA Modul
19.03.2013 21:50:20
Rolf
Hallo Renè,
aber genau das soll ja nicht geschehen müssen. Der Blattschutz sol lbeliben, weil das einfärben der Zellen von anderen Benutzern erfolgen soll.
Gruß Rolf

AW: Blattschutz bringt Laufzeitfehler 1004 VBA Modul
19.03.2013 22:01:00
Rolf
Ich glaube ich habe das Problem erkannt.
Wenn man in Excel manuell den Blattschutz setzt, kann man Optionen wie Zellen, Zeilen und Spalten formatieren durch ein x zulassen.
Nur wie bekommt man diese Option in die VBA Programmierung? Dort sind anscheinend nur standardmäßig die beiden ersten Optionen "gesperrte Zellen" und "nicht gesperrte Zellen" auswählen angegeben.
Kann man in meinem Macro auch die anderen Optionen, eben "Zellen einfärben zulassen" mit angeben?
Gruß Rolf

Anzeige
Zu allem, was mit Blattschutz u.Protect ...
20.03.2013 00:12:23
Luc:-?
…zusammenhängt, gibt's doch nun wirklich massenhaft Material im Archiv, Rolf!
Müssen denn hier „imma wieda olle Kamelln uffjewärmt“ wdn?
In der VBE-Hilfe zu Worksheet.Protect wdn unter Xl14 16 übergebbare Parameter aufgelistet, unter Xl10 und früher sind es auch mindestens 4, aber nicht das, was du schreibst.
Gruß Luc :-?

AW: Zu allem, was mit Blattschutz u.Protect ...
20.03.2013 00:40:05
Rolf
Hallo Luc,
bitte sehe es mir nach...ich habe keine Ahnung was du da schreibst zu
"VBE-Hilfe zu Worksheet.Protect wdn unter Xl14 16" etc.
Auch wenn das für dich alte Kamellen sind. Ich bin ein Dummi und habe eben nicht so das Wissen wie ihr. Deswegen hatte ich mir ja Hilfe von euch erhofft. Insbesondere freut es mich zu lesen, daß es ein Klacks wäre für euch Profis. Aber für mich als blutiger Anfänger, stehe vor einer tiefen unüberwindbaren Schlucht. Du kannst gerne lachen über mich, aber ich kämpfe hier wirklich um das Rad neu zu erfinden. Ok ich werde mal versuchen etwas passendes in den Analen zu finden. Auch wenn mir mit einer einfachen Antwort schneller geholfen gewesen wäre. Muss ja nicht immer sein. Ihr habt mir shcon ein paar Mal wirklich gut geholfen.
Schöne Grüße und verzeiht mir bitte.
Rolf

Anzeige
Wenn du etwas pgmieren willst, solltest ...
20.03.2013 01:33:53
Luc:-?
…du wenigstens einige Grundregeln kennen und dazu gehört auch der VBA-Editor (VBE), sonst wäre das sträflicher Leichtsinn, Rolf.
Nach Mumpels AW hatte ich nicht mehr auf dein Level geachtet. Möglicherweise willst du ja gar nichts pgmieren!? Dann kannst du das, was möglich ist, nur über die manuellen Befehle einstellen. Das wären dann für das Blatt bei Xl-Version10 (XP) mindestens 3 nach dem Passwort (also 4, mit VBA 5).
Was du meinst, sind sicher die beiden Zelleinstellungen, und da gibt's wirklich nur (un)gesperrt. Das ist aber nur mit dem Blattschutz möglich.
Wenn du mehr willst, musst du entweder was sehr Spezielles programmieren oder 'ne neuere XlVersion anschaffen.
Morrn, Luc :-?

Anzeige
AW: Wenn du etwas pgmieren willst, solltest ...
20.03.2013 02:00:12
Rolf
Also ich möchte eigentlich nichts programmieren Luc. Ich möchte nur eben die beiden guten Hilfen die ichhier in Form von MAkros (ich hoffe das ist der richtige Begriff) bekommen habe, zusammen nutzen können.
Also den VBA Editor kenne ich. Aber VBA eben nicht. Und da ich nur Excel Anwender bin, werde ich mich wohl in die Programmierung nicht tiefer einarbeiten. Das überlasse ich wirklich lieber solchen Leuten wie dir, die Excel gut kennen wollen. Schuster bleib bei deinem Leisten, sag ich da nur. Das traue ich mir in 10 Jahren nicht zu.
Ich arbeite zu Hause mit Excel XP und im Büro mit Excel 10.
Was ich wissen möchte ist....ob ich einen manuellen Befehl in Excle XP, wie also Extras, Schutz, Blatt schützen - dann Alle Nutzer dieses Blattes dürfen z.B. Zellen formatieren, auch in dem Makro mit einbauen kann.
Ich kopiere es mal hier mit rein....
Sub Aufheben()
Dim StrEing As String
StrEing = InputBox("Passwort ?")
On Error GoTo Errorhandler
For I = 1 To Sheets.Count
Sheets(I).Unprotect StrEing
Next I
Exit Sub
Errorhandler:
MsgBox "Falsches Passwort !"
End Sub

Sub Schutz()
For I = 1 To Sheets.Count
Sheets(I).Protect ("test")
Next I
End Sub

Weil wenn ich den Blattschutz manuell setze, und eben diese o.g. Option setze, funktioniert auch meine automatische Bedingte Formatierung eins A.
Lasse ich aber das o.g. Makro durchlaufen, bekomme ich den Laufzeitfehler.
Vielleicht ist da snur eine Zeile wie...."ZellFormatierung zulassen" oder dergleichen.
Aber das bekomme ich eben nicht hin.
Generell sind die Zellen die in denen die bedingte Formatierung durchgeführt werden soll, aber auch nicht gesperrt. Auch nicht nach setzen des Blattschutzes. Und deswegen weiß ich auch nicht ob ich den Fehler überhaupt richtig begriffen habe. Vielleicht stimmt mein Lösungsansatz schon nicht.
Gruß Rolf

Anzeige
In der VBE-Hilfe kannst du schon mal nach ...
20.03.2013 14:38:42
Luc:-?
Protect suchen, Rolf,
und lesen, was da bei Worksheet.Protect so alles geht im Vergleich von Xl10 (XP) und Xl14 (2010). Das ist im letzteren Falle sehr viel mehr. Man kann also nicht ein Programm für beide xlVersionen schreiben, man könnte höchstens beide Pgmme anschließend per bedingter Kompilierung zu einem zusammenfügen, aber da die so sehr unterschiedlich sein müssten, rate ich davon ab.
Allerdings könnte eine spezielle Lösung für deinen Fall unter Xl10 (die ja dann erforderlich wäre) auch unter Xl14 laufen.
Leider liegt das zZ meinen Interessen ziemlich fern und ist etwas aufwendig, weshalb ich dir da jetzt nicht weiterhelfen kann und deshalb deine Frage offen lasse. Möge sich ein Anderer finden! ;-)
Gruß Luc :-?

Anzeige
AW: In der VBE-Hilfe kannst du schon mal nach ...
20.03.2013 23:46:54
Rolf
Hallo Luc,
Ok, ich verstehe. Trotzdem Danke für deine Infos.
Nun hoffe ich auf andere Hilfe? Habe mich mit den Excel Versionen vertan.
Zu Hause Excel XP im Büro Excel 2010
Gruß Rolf

AW: In der VBE-Hilfe kannst du schon mal nach ...
21.03.2013 15:10:15
Heiko
Hallo Rolf,
hast du mal den Makrorecorder angeschmissen und dann das manuelle setzen der gewünschten Protcet Optionen durchgeführt.
Wenn du dann den Recorder beendest und in das aufgezeichnete Makro schaust, solltest du finden was du benötigst, oder habe ich dich falsch verstanden.
Gruß Heiko

AW: In der VBE-Hilfe kannst du schon mal nach ...
21.03.2013 22:17:42
Rolf
Hallo Heiko,
Danke für deinen Tip. Habe ich gemacht. Bekomme dadurch auch die gesetzten Einträge, aber mit der richtigen Platzierung hänge ich nun wieder. Habe sie in das Makro "Schutz setzen" eingebaut.
Aber der Laufzeitfehler im Makro ist dadurch nicht ausgehebelt worden.
Ich bekomme immer noch den selben Fehler. Ich glaube ich habe nicht den richtigen Lösungsansatz.
Irgend etwas scheint sich da mit dem Makro für die Autoformatierung zu beißen.
Gruß Rolf

Anzeige
AW: In der VBE-Hilfe kannst du schon mal nach ...
22.03.2013 10:47:29
Heiko
Hallo Rolf,
ich habe mir mal deine Datei runtergeladen, ein bisschen viel um sich da komplett einzudenken.
Aber es gibt noch das schöne Argument UserInterfaceOnly:=True bei Protect.
Wenn man das auf True setzt, in etwa wie im Beispiel unten, dann darf zwar der Bediener nichts änderen, Makros aber wohl. Teste doch mal das Argument mit zu setzen wenn du den Blattschutz setzt, vielleicht hilft es.
Sheets(I).Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, UserInterfaceOnly:=True
Gruß Heiko

AW: In der VBE-Hilfe kannst du schon mal nach ...
22.03.2013 23:58:59
Rolf
Hallo Heiko,
vielen Dank für deine Mühen. Kann ich das einfach so wie du es geschriben hast einfügen?
Wichtig zur Funktion....wenn jemand in eine rSpalte einen Wert aus drer Tabelle "Legende" einträgt. Soll diese Zelle so formatiert werden wie es eben in "Legende" eingetragen ist.
Man muss also schon in den Tabellen z.B. "Müller" , Einträge vornehmen.
Hab das so gemacht:
Sub Schutz()
Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, UserInterfaceOnly:=True
For I = 1 To Sheets.Count
Sheets(I).Protect ("test")
Next I
End Sub
Aber damit bekomme ich die Fehlermeldung beim Setzen des Schutzes:
"Fehler beim Kompilieren:
Sub oder 

Function nicht definiert"
Gruß Rolf

Anzeige
AW: In der VBE-Hilfe kannst du schon mal nach ...
23.03.2013 15:21:29
Heiko
Hallo Rolf,
so einfach ist das nun auch wieder nicht, sondern so wie unten. Die Parameter die ich hier eingesetzt habe sind aber nur Beispiele, da mußt du schon die einfügen die du beim Aufzeichnen mit dem Makrorekorder bekommen hast plus UserInterfaceOnly:=True
Sub Schutz()
For I = 1 To Sheets.Count
Sheets(I).Protect Password:="test", DrawingObjects:=True, Contents:=True, Scenarios:=True,  _
_
AllowFormattingCells:=True, UserInterfaceOnly:=True
Next I
End Sub
Gruß Heiko

Betrifft: Blattschutz bringt Laufzeitfehler 1004 V
25.03.2013 16:32:25
Rolf
Hallo Leute,
habt ihr keine Idee mehr?
Bräuchte das dringend.
Gruß Rolf
Anzeige

27 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige