Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Blattschutz über Code aufheben ?





Frage

Habe schon selbst danach gesucht, doch noch keine zufriedenstellende Lösung gefunden ..... Ich habe in EXCEL eine START-Seite als inhaltlich veränderbare Datenbank erstellt auf welche die einzelnen Formeln der Tabellen 1-4 zugreifen um sofort mit den neuesten Vorgaben kalkulieren zu können. Ein Beispiel hierzu wären unter anderem die sich ständig verändernden Benzinpreise oder auch diverse MwSt-Sätze im In-und Ausland, und vieles andere mehr ..... Um keinen Unfug mit den veränderbaren WERTEN der Datenbank anstellen zu können (es arbeiten mehrere Leute damit !), hätte ich gerne den Zugang zu den veränderbaren Werten der Datenbank über eine Verbindung mit dem Blattschutz geschützt. Zu diesem Zweck habe ich zunächst in Zelle (B1) nachfolgende Formel geschrieben: =WENN(ISTLEER(A1);"Bitte geben Sie Ihren Namen in das Feld( A1) ein";+WENN(A1="Walter";"OK!";"Bitte tragen Sie den richtigen Namen ein!")) In (B2) die Formel: =WENN(ISTLEER(A2);"Bitte geben Sie Ihr Kennwort in das Feld (A2)ein";+WENN(A2="paulchen";"OK!";"Falsches Kennwort !")) In (B3) die Formel: =WENN(ISTLEER(A2);"Resultat:";+WENN(B2="Falsches Kennwort !";"NEIN!";"JA!")) Nun hätte ich gerne, dass; wenn in Zelle B3 „JA!“ erscheint, der Blattschutz aufgehoben wird um die dort stehenden Werte verändern zu können. Steht jedoch „NEIN!“, soll der Blattschutz bestehen bleiben ! Wer weiß Rat ?? Und wer ist so nett und hilft mir ? Gruß

Antwort 1 von Ahnan

Hallo,

dass geht nur über VBA:

Option Explicit

Private Sub Worksheet_Calculate()
If Range("B3").Value = "Ja" Then
ActiveSheet.Unprotect
End If
End Sub

Dies ist im Codefenster des betreffenden Tabellenblatts einzutragen.
Allerdings müsste der Blattschutz an irgendeiner Stelle wieder aktiviert werden !

MfG

Antwort 2 von Event

Hallo

so wie von Dir angedacht wird es wohl nicht gehen, da bei aktiviertem Blattschutz keine Eingaben möglich sind.
Auserdem ist der Schutz wohl von jedem zu knacken der lesen kann.
Warum also nimmst Du nicht einfach den normalen Blattschutz mit Kennwortabfrage?

Gruß

Antwort 3 von michel123

hi all :)

möchtest mit blattschutz oder ueber vb geschuetzt haben ?

ich mach mal einiges uebes wochenende

gruss michel

Antwort 4 von taxe

Hi Ahnan , Event und michel 123 !

Natürlich habt ihr recht wenn ihr nicht so richtig wusstet was meine Frage eigentlich soll. Mittlerweile sehe ich auch ein, dass man eine frei veränderbare Datenbank alleine mit dem „BLATTSCHUTZ“ nicht wirksam schützen kann. Aber wenn man sich den ganzen Tag mit verschachtelten WENN und UND und NICHT Formeln beschäftigt hat ,sieht man am Abend den Wald vor lauter Bäumen nicht mehr ......
Habe also heute noch mal darüber nachgedacht und auch eine mich befriedigende Lösung gefunden , ohne den Blattschutz jemals aufheben zu müssen !

Beispiel: Die in meinem vorstehenden Posting genannten Zellen A1, A2, A3 , wie auch die Formeln für B1 , B2 , B3 werden beibehalten.

In Irgendeine freie Zelle, sagen wir A5 , füge ich einen Kommentar ein damit der Nutzer weiß welcher Wert hier eingetragen werden muss. (zum Bsp.: 16 oder auch 25 ) für MwSt (1) . Und so kann ich 20 oder auch 50 Zellen untereinander für die Eingabe jeweils anderer Werte präparieren. (Diese Zellen müssen natürlich von dem Blattschutz ausgenommen werden!)

Genau neben diese Zellen, hier also B5, B6 usw., halte ich mir genauso viele Zellen frei wie ich für meine Wertangaben in Spalte A belegt habe. In diese Zellen , ( welche später in den Blattschutz mit einbezogen werden ) schreibe ich dann den jeweiligen Bezug zur Nebenzelle , nämlich : WENN(B3=“JA!“;A5) Sämtlich nachstehende Tabellen greifen dann auf die durch den Berechtigungsnachweis geschützten WERTE der Spalte B zurück. Gebe ich jedoch ein falsches Codewort ein, werden die ungeschützten WERTE der Spalte A nicht in Spalte B übertragen und es erscheint ein FALSCH !
Der BLATTSCHUTZ muss also nie aufgehoben werden und keiner der das Codewort nicht kennt kann mit dieser Arbeitsmappe etwas anfangen !

Gruß und Danke, an Alle die mir helfen wollten !

Antwort 5 von michel123

hi all :)

hier das gewuenschte

gruss michel

rem dieser code gehört in die arbeitsmappe

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets(1).Protect = False Then
Tabelle1.Protect "1"
End If
End Sub
Private Sub Workbook_Open()
Range("a1").Select
If Workbooks(1).Sheets("Tabelle1").Protect = False Then
Workbooks(1).Sheets("Tabelle1").Protect "1"
End If
If Range("A1:C1").Locked = True Then
Tabelle1.Protect "1"
End If
End Sub

rem dieser code gehört in die tabelle

wie du sehen kannst zur zeit auf 4 benutzer mit vier passwoerten versehen,leicht zu erweitern geht mit erhoehung der dimension,die indexe der namen sind die selben bei den passwörtern

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim namen(4) As String
Dim namenpass(4) As String
namen(1) = "Klaus"
namen(2) = "Peter"
namen(3) = "Sabine"
namen(4) = "Heike"
namenpass(1) = "hund"
namenpass(2) = "katze"
namenpass(3) = "vogel"
namenpass(4) = "giraffe"
Dim zaehler1 As Integer
Dim zaehler2 As Integer
Dim zaehler3 As Integer
For zaehler1 = 1 To 4
If Range("A1") = namen(zaehler1) Then
zaehler2 = zaehler1
End If
Next zaehler1
For zaehler1 = 1 To 4
If Range("B1") = namenpass(zaehler2) And zaehler2 > 0 Then
zaehler3 = zaehler1
Range("C1") = "Ja"
Else
Range("C1") = "Nein"
End If
Next zaehler1
If Range("C1") = "Ja" Then
Tabelle1.Unprotect "1"
End If
End Sub

Antwort 6 von michel123

hi all :)

die makros sollten anschliessend noch
geschuetzt werden.

gruss michel

Antwort 7 von michel123

hi all

das workbook open makro hatte noch kein löschbefehl fuer name passwort gehabt,hier korrigiert,ausserdem noch zu sagen das die 1 das blattschutzpasswort ist und tabelle1 gegebenefalls noch der name angepasst werden sollte

gruss michel

Private Sub Workbook_Open()
Range("a1:c1") = ""
Range("a1").Select
If Workbooks(1).Sheets("Tabelle1").Protect = False Then
Workbooks(1).Sheets("Tabelle1").Protect "1"
End If
If Range("A1:C1").Locked = True Then
Tabelle1.Protect "1"
End If
End Sub

Antwort 8 von taxe

Hi Michel,

deine Lösung zur Verhinderung eines unberechtigten Zugriffs auf die Datenbank ist – gegenüber meiner – wesendlich besser und auch einfacher nachzuvollziehen. Doch auch hier kann sich jeder „Eierdieb“ per Passwortremover Zugriff verschaffen ........ Dies sollte jedoch kein großes Problem darstellen weil ich annehme, dass normale Büroangestellte gar nicht wissen was ein Passwordremover ist ........

Danke Dir für deine Arbeit !

Gruß Walter

Antwort 9 von michel123

hi walter

danke fuer die blumen,hat spass gemacht :))

fuer noch sensiblere daten 256 bit echtzeitverschluesselung im betriebssystem integriert :)) ,muesste es geben glaub ich :)

gruss michel