Office - Word, Excel und Co. 9.753 Themen, 41.598 Beiträge

Excel 2010 Formular VBA Zellen sperren

Amitl / 20 Antworten / Baumansicht Nickles

Ich habe ein Problem mit dem "Aktivieren der Bearbeitung" bei Makros.

Mein Formular gestattet lt. VBA-Ereignis (ScrollArea = "H6:I33") nur Einträge in bestimmte Zellen, der Rest ist gesperrt.

Das funktioniert und klappt auch, wenn der User nach dem Öffnen der Datei oben "Inhalt aktivieren" anklickt.

Tut der dies aber nicht und versucht vorher Veränderungen in den anderen Zellen vorzunehmen, so geht das!

Ist das so oder habe ich was falsch gemacht?

Danke

bei Antwort benachrichtigen
mawe2 Amitl „Excel 2010 Formular VBA Zellen sperren“
Optionen

Vermutlich wird der Blattschutz erst mit VBA gesetzt. Und wird das nicht zugelassen (= Makros nicht aktiviert), dann gibt es keinen Schutz.

Der Blattschutz muss bereits vorher (ohne VBA, also direkt in Excel) gesetzt werden.

Gruß, mawe2

bei Antwort benachrichtigen
Amitl mawe2 „Vermutlich wird der Blattschutz erst mit VBA gesetzt. Und wird das nicht zugelassen Makros nicht aktiviert , dann gibt es ...“
Optionen

Hab ich fast schon befürchtet, dass ich den normalen Schutz hier noch zusätzlich aktivieren muss.

Danke f.d. schnelle Reaktion

Amitl

bei Antwort benachrichtigen
hddiesel Amitl „Hab ich fast schon befürchtet, dass ich den normalen Schutz hier noch zusätzlich aktivieren muss. Danke f.d. schnelle ...“
Optionen

Hallo Amitl,

ein Rechtsklick auf den Tabellenblattreiter und Code anzeigen wählen.

In den Codebereich des Tabellenblatts folgenden Code einfügen, dann sollte die Begrenzung immer Aktiv sein.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ScrollArea = "$H$6:$I$33"
End Sub

Mit Blattschutz hat ScrollArea = "$H$6:$I$33" nix zu tun, du Begrenzt die Eingabe nur auf einen bestimmten Bereich, auch ohne den Blattschutz zu setzen.

Als Alternative für einen festgelegten Bereich, kannst du auch folgenden Code in den Codebereich von DieseArbeitsmappe einfügen, Tabelle1 natürlich auf deine Arbeitsblatt anpassen, dann wird das Makro nicht wiederholt aufgerufen, wenn du eine neue Zelle aktivierst.

Private Sub Workbook_Open()
ThisWorkbook.Sheets("Tabelle1").ScrollArea = "$H$6:$I$33"
End Sub

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
mawe2 Amitl „Hab ich fast schon befürchtet, dass ich den normalen Schutz hier noch zusätzlich aktivieren muss. Danke f.d. schnelle ...“
Optionen
Hab ich fast schon befürchtet, dass ich den normalen Schutz hier noch zusätzlich aktivieren muss.

Ist das für Dich ein Problem?

Gruß, mawe2

bei Antwort benachrichtigen
mumpel1 Amitl „Excel 2010 Formular VBA Zellen sperren“
Optionen

Hallo!

Das ist so. Ohne Aktivierung von VBA und ohne "Inhalte aktivieren" ist VBA wirkungslos. Nur wenn Makros aktiviert werden und wenn "Inhalte aktivieren" geklickt wurde sind die Makros aktiv. Und ohne VBA greift auch die Scrollarea nicht.

Anstatt mit Scrollarea solltest Du "Benutzer dürfen Bereich bearbeiten" einsetzen, dafür musst Du nur das Kennwort mitgeben und könntest auf VBA verzichten.

Oder Du gibt's den Zellbereich komplett frei und sperrst die anderen Zellen.

Du kannst verhindern dass Benutzer in nicht gewünschte Zellen springen indem Du zusätzlich zur entsprechenden Einstellung im Tabellenschutz eine transparente Textbox über die zu schützenden Zellen legst.

Gruß, René

bei Antwort benachrichtigen
hddiesel mumpel1 „Hallo! Das ist so. Ohne Aktivierung von VBA und ohne Inhalte aktivieren ist VBA wirkungslos. Nur wenn Makros aktiviert ...“
Optionen

Hallo René,

ohne das ausführen von Makros zulassen, funktioniert kein Makro, Das ist Richtig.

Privat habe ich mir deshalb mit SELFCERT.EXE  ein eigenes Zertifikat erstellt, es gibt auch andere Programme, z.B. Abylon SELFCERT für die neueren Office Versionen.
Im Geschäftsbereich hat aber die Firma das Sagen, was geht und was nicht.

Mit einem Certificat in der Datei, kann der Schutz auch auf Hoch stehen und der Code wird ohne Rückfragen ausgeführt.

Bei neueren Office Versionen, muß das Certificat aber erst als Sicher im System hinterlegt werden, bis Excel 2003, war das noch einfacher zu Handhaben.

Vorteil mit Certificat, es muß nicht immer das ausführen von Makros, beim öffnen einer Certificierten Datei erlaubt werden.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
mumpel1 hddiesel „Hallo René, ohne das ausführen von Makros zulassen, funktioniert kein Makro, Das ist Richtig. Privat habe ich mir deshalb ...“
Optionen

Ein Zertifikat funktioniert aber nicht auf jedem Rechner. Bei mir funktionieren Zertifikate schon lange nicht mehr. Grund dafür sind Kartenlesegeräte und/oder dafür installierte Treiber. Office sucht anscheinend auf den Kartenlesegeräten nach passenden Signaturen und/oder Schlüsseln. Die existieren dort natürlich nicht. Seit Office 2000 gibt es dieses Problem, und keine Änderung in Sicht. Da setze ich lieber auf die vertrauenswürdigen Ordner, ist einfacher und kann auch von Administratoren per Gruppenrichtlinie gesetzt bzw. beeinflusst werden.

bei Antwort benachrichtigen
Amitl mumpel1 „Ein Zertifikat funktioniert aber nicht auf jedem Rechner. Bei mir funktionieren Zertifikate schon lange nicht mehr. Grund ...“
Optionen

Leider komme ich da nicht mehr mit.

hddiesel: Das SelctionChange-Ereignis habe ich angewendet, aber es verhindert nicht, dass man nach dem Öffnen der Datei bevor ich auf "Inhalte aktivieren" gehe (makro-Sicherheitsanfrage) die Exceldatei beliebig verändern und neu speichern kann.

Genau das wollte ich nicht.

Amitl

bei Antwort benachrichtigen
mumpel1 Amitl „Leider komme ich da nicht mehr mit. hddiesel: Das SelctionChange-Ereignis habe ich angewendet, aber es verhindert nicht, ...“
Optionen

Das kannst Du aber nicht wirksam verhindern. Makros werden erst aktiv wenn man sie aktiviert. Wer Makros nicht aktivieren möchte/kann der kann mit der Datei alles machen wenn diese nicht wirksam geschützt ist.

Einzige Möglichkeit wäre die Datei mit Dateikennwort und Schreibschutzkennwort zu speichern. Die Datei wird dann per EXE-Datei geöffnet, wobei Kennwörter automatisch übergeben und Makros automatisch aktiviert werden. Diese Methode ist aber auf fremden Rechnern nicht in Ordnung, da jeder Anwender selber entscheiden soll/möchte ob er Makros aktiviert oder nicht.

bei Antwort benachrichtigen
mumpel1 Amitl „Leider komme ich da nicht mehr mit. hddiesel: Das SelctionChange-Ereignis habe ich angewendet, aber es verhindert nicht, ...“
Optionen

Oder Du arbeitest mit Dummy-Blättern. Beim Schließen der Datei werden alle Tabellenblätter ausgeblendet und das Dummyblatt eingeblendet (per VBA). Aktiviert der Anwender die Makros nicht sieht er nur das Dummyblatt. Werden Makros aktiviert wird das Dummyblatt ausgeblendet und die Hauptblätter eingeblendet. Beispiele im Internet zu finden.

bei Antwort benachrichtigen
hddiesel mumpel1 „Ein Zertifikat funktioniert aber nicht auf jedem Rechner. Bei mir funktionieren Zertifikate schon lange nicht mehr. Grund ...“
Optionen

Hallo Mumpel1,

hast du das erstellte Zertifikat, unter
Internetoptionen
Inhalte
Zertifikate

als Vertrauenswürdiges Zertifikate Importiert und eingetragen?

Wenn nicht, dann geht das in den neuen Versionen nicht mehr.

Habe selbst mit  Abylon SELFCERT, ein eigenes Zertifikat erstellt
und als Vertrauenswürdig Importiert, habe keine Probleme mit meinen Zertifikaten,
 auch nicht unter Windows 7 Ultimate 64-Bit, selbst das übertragen auf das Notebook, machte keine Probleme.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
mumpel1 hddiesel „Hallo Mumpel1, hast du das erstellte Zertifikat, unter Internetoptionen Inhalte Zertifikate als Vertrauenswürdiges ...“
Optionen

Viel zu umständlich wenn man ständig mit anderem Code austauscht. Erklär mal einem Standardanwender was er tun muss damit es funktioniert. Da kostet das Installieren des Zertifikates beim Kunden mehr als die Programmierung. Zwinkernd

bei Antwort benachrichtigen
hddiesel mumpel1 „Viel zu umständlich wenn man ständig mit anderem Code austauscht. Erklär mal einem Standardanwender was er tun muss ...“
Optionen

Hallo mumpel1,

wie meinst du das, "Viel zu umständlich wenn man ständig mit anderem Code austauscht."

Das Zertifikat als Vertrauenswürdig im System hinterlegen, ist eine Einmalige Sache, ansonsten wird das hinterlegte Zertifikat im VBA Editor, bei einer Datei mit VBA Code ebenfalls Einmalig ausgewählt.

Bei mir funktioniert das schon viele Jahre und das ohne Probleme, sowohl mit und ohne Karte, kommt immer auf das hinterlegte Zertifikat an.

Was ist hier viel zu umständlich?

Hast du ein Zertifikat, mit Kartenzugriff hinterlegt, dann legst du eines ohne Kartenzugriff an und wählst dieses Zertifikat im VBA Editor aus.

Das Ganze Problem hat mit Kartenlesegeräte, Stick, oder Treiber überhaupt nichts zu tun, das Problem sitzt meist vor der Tastatur.

Als Alternative kannst du den Makroschutz auf die niedrigste Stufe stellen, was ich allerdings nicht Empfehlen werde.

Wird ein Zertifikat in einem Betrieb benutzt, hat der Administrator und Firmenbesitzer das Sagen, ob Erlaubt oder nicht.

Windows 10 Pro 64-Bit, 22H2: MS Office Pro Plus 2016 32-Bit: Mein Motto: Leben und leben lassen: Gruss Karl
bei Antwort benachrichtigen
mumpel1 hddiesel „Hallo mumpel1, wie meinst du das, Viel zu umständlich wenn man ständig mit anderem Code austauscht. Das Zertifikat als ...“
Optionen

Wenn man mehrere Kunden/Anwender hat die sich nicht auskennen ist ein Zertifikat für mich umständlich. Denn dann müsste ich ständig bei den Anwendern per TeamViewer auf den Rechner um es richtig einbinden zu können.

Hast du ein Zertifikat, mit Kartenzugriff hinterlegt, dann legst du eines ohne Kartenzugriff an und wählst dieses Zertifikat im VBA Editor aus.

Ich lege ja keine Karte an. Office schaut automatisch auf den Kartenleser. Egal ob man eine Signaturkarte verwendet oder nicht. Das scheint eher ein uralter BUG zu sein.

bei Antwort benachrichtigen
Borlander mumpel1 „Hallo! Das ist so. Ohne Aktivierung von VBA und ohne Inhalte aktivieren ist VBA wirkungslos. Nur wenn Makros aktiviert ...“
Optionen
Du kannst verhindern dass Benutzer in nicht gewünschte Zellen springen indem Du zusätzlich zur entsprechenden Einstellung im Tabellenschutz eine transparente Textbox über die zu schützenden Zellen legst.

Verhindert das auch, dass man z.B. per Tastatur (Cursor, Tab, Enter) in die Zelle wechselst?

bei Antwort benachrichtigen
mumpel1 Borlander „Verhindert das auch, dass man z.B. per Tastatur Cursor, Tab, Enter in die Zelle wechselst?“
Optionen

Wenn Du die Zellen sperrst und einen Blattschutz setzt schon. Ich schrieb ja "zusätzlich zur entsprechenden Einstellung".

bei Antwort benachrichtigen
Borlander mumpel1 „Wenn Du die Zellen sperrst und einen Blattschutz setzt schon. Ich schrieb ja zusätzlich zur entsprechenden Einstellung .“
Optionen
"zusätzlich zur entsprechenden Einstellung"

Das hatte ich schon gelesen. Aber was genau wäre denn noch möglich, wenn man auf diese zusätzliche Lösung verzichtet?

bei Antwort benachrichtigen
mumpel1 Borlander „Das hatte ich schon gelesen. Aber was genau wäre denn noch möglich, wenn man auf diese zusätzliche Lösung verzichtet?“
Optionen

Ohne VBA garnichts. Excel ist nun mal eine Tabellenkalkulation, kein Datentresor. Der ganze Schutz dient ja nur dem Schutz der eigenen Dummheit. Zwinkernd

bei Antwort benachrichtigen
Amitl mumpel1 „Wenn Du die Zellen sperrst und einen Blattschutz setzt schon. Ich schrieb ja zusätzlich zur entsprechenden Einstellung .“
Optionen

Bin noch VBA-Anfänger, wenn ich ehrlich sein soll, und dachte man könnte auch auf diesem Gebiet (Schutz/Sperren von Bereichen) mehr mit VBA machen als mit Bordmitteln, naja.

Danke allen f.d. rege Beteiligung.

Amitl

bei Antwort benachrichtigen
mumpel1 Amitl „Bin noch VBA-Anfänger, wenn ich ehrlich sein soll, und dachte man könnte auch auf diesem Gebiet Schutz/Sperren von ...“
Optionen

Machen kann man das schon. Man kann sogar mehr machen als Du Dir vorstellen kannst. Aber wenn VBA deaktiviert wird ist halt ende.

Es gäbe noch die Möglichkeit mit "Lock XLS" die Datei abzusichern. Das wäre dann zu 99,5% sicher. Aber dafür muss bei den Anwendern die Laufzeitbibliothek installiert sein. Und mit 190,- Euro auch nicht billig. http://www.lockxls.de/

bei Antwort benachrichtigen