Herbers Excel-Forum - das Archiv

Nur mit Werten gefüllte Zellen schreibschützen?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Nur mit Werten gefüllte Zellen schreibschützen?
von: asz

Geschrieben am: 14.12.2006 15:34:40
Hallo,
ich habe ein weiteres Problem: Aus einem (später mal Online-)Excel-Formular werden Daten in ein Auswertungsblatt in derselben Mappe gespielt - per Makro. Problem: Das Auswertungsblatt soll zwar von jedem angesehen werden können, nicht aber verändert - also brauche ich einen Schreibschutz. Wenn ich aber das ganze Auswertungsblatt unter Schreibschutz stellen, funktioniert das Makro nicht mehr, das ja Werte zeilenweise in die Auswertungstabelle schreibt. Wie kann ich nur *den* Bereich schreibschützen, der bereits mit Werten gefüllt ist (und dieser Bereich ändert sich natürlich mit jedem ausgefüllten Formular um eine neue Zeile)?
In diesem Forum ist mir schon so viel geholfen worden - es wäre toll, wen auch hier jemand die Antwort wüsste.
Dankeschön im voraus & Grüße
asz
Bild

Betrifft: AW: Nur mit Werten gefüllte Zellen schreibschützen?
von: Rudi Maintaire
Geschrieben am: 14.12.2006 15:40:35
Hallo,
schütze das Blatt per VBA
sheets(1).protect Password:="test", userinterfaceonly:=true
Dann können Änderungen nur per Code durchgeführt werden.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Bild

Betrifft: AW: Nur mit Werten gefüllte Zellen schreibschützen
von: asz

Geschrieben am: 14.12.2006 15:55:00
Hallo Rudi,
vielen Dank! Könntest Du mir noch sagen, wo ich die Zeile am besten einbaue? Das Formular hat einen Button 'Abschicken', der mit dem u.g. Makro verknüpft ist, das die Ergebnisse in ein Blatt 'Auswertung' spielt (und dieses soll geschützt werden).
Vielen Dank für Deine Hilfe!
ASZ
Sub Veranstaltung_neu2()
'Variablen deklarieren
Dim Wks1 As Worksheet
Dim Wks2 As Worksheet
Dim Cb As OLEObject
Dim X As Integer
'Werte an Variablen zuweisen
Set Wks1 = Sheets("Veranstaltung")
Set Wks2 = Sheets("Auswertung")
'Kopieren der Daten aus dem Sheet "Veranstaltung" in das Sheet "Auswertung"
'Wks2.Range("B65536").End(xlUp).Offset(1, 0) Diese Anweisung wählt aus Spalte B
'die erste Leere Zelle von Unten aus
Wks2.Range("B65536").End(xlUp).Offset(1, 0) = Wks1.Range("B8")
Wks2.Range("C65536").End(xlUp).Offset(1, 0) = Wks1.Range("B11")
Wks2.Range("K65536").End(xlUp).Offset(1, 0) = Wks1.Range("B21")
Wks2.Range("B65536").End(xlUp).Offset(1, 0) = Wks1.Range("C45")
Wks2.Range("AC65536").End(xlUp).Offset(1, 0) = Wks1.Range("B49")
'Rücksetzen der Checkboxen
For Each Cb In Wks1.OLEObjects
If Not IsNumeric(Right(Cb.Name, 2)) Then
X = CInt(Right(Cb.Name, 1))
Else
X = CInt(Right(Cb.Name, 2))
End If
Select Case X
'Hier kannst du noch ändern welche Checkboxen noch oder nicht mehr zurückgesetzt werden,
'indem du die Nummer der CheckBox hinzufügst oder rauslöschst
Case 2, 3, 4, 9, 10, 11, 12, 13, 14, 15, 16, 17, 23, 25, 27, 28, 29, 30
Cb.Object.Value = False
Case Else
End Select
Next
'Leeren der Zellen in Sheet "Veranstaltung"
Wks1.Range("B8,B11,B21,C45,B49").ClearContents
End Sub

Bild

Betrifft: AW: Nur mit Werten gefüllte Zellen schreibschützen
von: Mustafa

Geschrieben am: 14.12.2006 23:11:59
Hallo asz,
du hättest das aber auch gleich sagen können.
So müsste es gehen:
Sub Veranstaltung_neu2()
'Variablen deklarieren
Dim Wks1 As Worksheet
Dim Wks2 As Worksheet
Dim Cb As OLEObject
Dim X As Integer
'Werte an Variablen zuweisen
Set Wks1 = Sheets("Veranstaltung")
Set Wks2 = Sheets("Auswertung")
'Sheet "Auswertung" Passwortgeschützt
Wks2.protect Password:="test", userinterfaceonly:=true
'Kopieren der Daten aus dem Sheet "Veranstaltung" in das Sheet "Auswertung"
'Wks2.Range("B65536").End(xlUp).Offset(1, 0) Diese Anweisung wählt aus Spalte B
'die erste Leere Zelle von Unten aus
Wks2.Range("B65536").End(xlUp).Offset(1, 0) = Wks1.Range("B8")
Wks2.Range("C65536").End(xlUp).Offset(1, 0) = Wks1.Range("B11")
Wks2.Range("K65536").End(xlUp).Offset(1, 0) = Wks1.Range("B21")
Wks2.Range("B65536").End(xlUp).Offset(1, 0) = Wks1.Range("C45")
Wks2.Range("AC65536").End(xlUp).Offset(1, 0) = Wks1.Range("B49")
'Rücksetzen der Checkboxen
For Each Cb In Wks1.OLEObjects
If Not IsNumeric(Right(Cb.Name, 2)) Then
X = CInt(Right(Cb.Name, 1))
Else
X = CInt(Right(Cb.Name, 2))
End If
Select Case X
'Hier kannst du noch ändern welche Checkboxen noch oder nicht mehr zurückgesetzt werden,
'indem du die Nummer der CheckBox hinzufügst oder rauslöschst
Case 2, 3, 4, 9, 10, 11, 12, 13, 14, 15, 16, 17, 23, 25, 27, 28, 29, 30
Cb.Object.Value = False
Case Else
End Select
Next
'Leeren der Zellen in Sheet "Veranstaltung"
Wks1.Range("B8,B11,B21,C45,B49").ClearContents
End Sub

Rückmeldung obs Hilft wäre nett.
Viele Grüße aus Köln.
Bild

Betrifft: AW: Nur mit Werten gefüllte Zellen schreibschützen
von: asz
Geschrieben am: 15.12.2006 08:47:25
Hallo Mustafa,
haha, sorry, der Aspekt hat sich erst im Nachhinein ergeben (hier treffen die Anforderungen tröpfchenweise ein) und ich wollte den anderen Thread nicht damit belasten. Herzlichen Dank für die Hifle!!
ASZ
Bild

Betrifft: PS - AW: Nur mit Werten gefüllte Zellen...
von: asz

Geschrieben am: 15.12.2006 09:16:39
PS: Es gibt noch ein kleines Problem: Deine Lösung für den Schreibschutz funktioniert zwar gut, bei jedem Anklicken einer Checkbox im Formular bekommt man allerdings die Meldung, dass das Blatt, das man ändern will, schreibgeschützt ist - was man natürlich auch keinem zumuten kann - was tun?
Danke & viele Grüße
asz
Bild

Betrifft: PS - AW: Nur mit Werten gefüllte Zellen...
von: Mustafa

Geschrieben am: 15.12.2006 22:51:59
Hallo asz,
Ich dachte das das Blatt nicht manuell geändert werden soll.
Vielleicht erörterst du mal etwas detaillierter wie der Aufbau deiner Mappe ist oder stellst mal eine Bsp. Mappe ein.
Danke für die Rückmeldung.
Viele Grüße aus Köln.
 Bild
Excel-Beispiele zum Thema "Nur mit Werten gefüllte Zellen schreibschützen?"
Anzeigen von Werten und Formeln Zellen bei Minuswerten schraffieren
MsgBox mit Werten aus geschlossener Arbeitsmappe Wiederherstellung des alten Zellinhaltes bei unerlaubten Werten
Stempelkarten auswerten Übernahme von Werten mit "x" in eine zweite Tabelle
Mit TextBox-Werten in UserForm rechnen Wahrheitsprüfung einer mit Zellwerten zusammengestzten Formel
Fußballwette auswerten Assistent zum Dialog aufrufen und Eingaben auswerten