Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1348to1352
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 deaktivieren/aktivieren nach Userform

Blattschutz deaktivieren/aktivieren nach Userform
28.02.2014 14:07:17
Stefan
Hallo zusammen,
unser VBA-Projekt ist in den letzten Zügen - soweit funktioniert nun alles.
Wir befüllen eine OPL (Offene-Punkte-Liste) über ein Userform mit Aufbaben, um diese in unseren täglichen Meetings zu tracken.
Jetzt möchte ich natürlich, dass jeder mit dieser Liste arbeitet - jedoch nicht auf die Idee kommt, gewisse Dinge zu ändern oder zu löschen.
So möchten wir die OPL mit einem Blattschutz versehen und nur bestimmte Spalten zur Bearbeitung freigeben. Wie bekomme ich in meinen Code die Befehle rein, um den Blattschutz beim Aufruf der Maske zu deaktivieren und nach Füllung über die Userform wieder zu aktivieren? Habe schon etwas herumprobiert - schaffe es aber nicht wirklich.
Hier mal der Codeabschnitt zum Befüllen meiner OPL (ich gehe davon aus, hier muss vorne dran die Deaktivierung / dahinter die Aktivierung des Schutzes, oder?) Wo/wie muss ich das einbauen? - Gruß Stefan
[code]

Private Sub cmdEingabe_Click()
'Fügt eingetragene Werte in Tabellenblatt und schließt das Formular frmMaske
If txtTermin = "" Then
MsgBox ("Bitte Termin zur Fertigstellung eintragen")
txtTermin.SetFocus
Exit Sub
End If
Dim intErsteLeereZeile As Long
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
ActiveSheet.Cells(intErsteLeereZeile, 2).Value = Me.txtLfdNr.Value
ActiveSheet.Cells(intErsteLeereZeile, 3).Value = CDate(Me.txtDatum.Value)
ActiveSheet.Cells(intErsteLeereZeile, 4).Value = Me.txtKW.Value
ActiveSheet.Cells(intErsteLeereZeile, 5).Value = Me.cboVerantwortlich.Value
ActiveSheet.Cells(intErsteLeereZeile, 6).Value = Me.cboKategorie.Value
ActiveSheet.Cells(intErsteLeereZeile, 10).Value = Me.cboPrio.Value
ActiveSheet.Cells(intErsteLeereZeile, 13).Value = Me.cboStatus.Value
ActiveSheet.Cells(intErsteLeereZeile, 7).Value = Me.txtThema.Value
ActiveSheet.Cells(intErsteLeereZeile, 8).Value = Me.txtBezeichnung.Value
ActiveSheet.Cells(intErsteLeereZeile, 9).Value = Me.txtMaßnahmen.Value
ActiveSheet.Cells(intErsteLeereZeile, 12).Value = Me.cboFortschritt.Value
ActiveSheet.Cells(intErsteLeereZeile, 11).Value = Me.txtTermin.Value
ActiveSheet.Cells(intErsteLeereZeile, 14).Value = Me.cboHerkunft.Value
Unload frmMaske
End Sub
[code]
Das die Codeabschnitte für den Blattschutz:
[/code]Sub Blattschutz_deaktiverien()
'
' Blattschutz_deaktiverien Makro
'
'
ActiveSheet.Unprotect
End Sub
Sub Blattschutz_aktivieren()
'
' Blattschutz_aktivieren Makro
'
'
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
End Sub [/code]

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz deaktivieren/aktivieren nach Userform
28.02.2014 14:45:37
Tino
Hallo,
füge bei ActiveSheet.Protect
den Parameter UserInterfaceOnly:=True mit ein,
dann können Makros in die Zellen schreiben die Tabelle bleibt aber geschützt.
Dies kannst Du zBsp. beim start der Userform erstellen.
Beispiel:
Private Sub UserForm_Initialize()
ActiveSheet.Protect Password:="xxxx", UserInterfaceOnly:=True, _
DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End Sub
Gruß Tino

AW: Blattschutz deaktivieren/aktivieren nach Userform
28.02.2014 14:47:36
Rudi
Hallo,
deaktivieren vor intErsteLeereZeile =.. und aktivieren hinter Unload frmMaske
wo sonst?
Gruß
Rudi

Anzeige
AW: Blattschutz deaktivieren/aktivieren nach Userform
28.02.2014 14:54:21
GuentherH
der Unprotect-methode musst Du ein Passwort übergeben
Dazu im Declarationsteil des 1ten Moduls
Global const Passwort = "Geheimwort"
schreiben
Dann immer mit activesheet.protect Passwort
und activesheet.unprotect Passwort
arbeiten.
Unbedingt auch den Code mit Passwort schützen, dann kann dort nur jemand nachschauen, der das Passwort für den Code kennt.
mehr Schutz ist Makulatur, denn mit dem richtigen Code aus dem Netz knackt man den Blattschutz recht schnell.
Deinem bestehenden Code nach könnte Dir diese Anleitung reichen, um weiterzukommen.
Gruß,
Günther

Anzeige
nebenbei
28.02.2014 14:57:37
Rudi
Hallo,
das geht viel kürzer.
Private Sub cmdEingabe_Click()
'Fügt eingetragene Werte in Tabellenblatt und schließt das Formular frmMaske
Dim intErsteLeereZeile As Long
If txtTermin = "" Then
MsgBox ("Bitte Termin zur Fertigstellung eintragen")
txtTermin.SetFocus
Exit Sub
End If
Blattschutz_deaktivieren
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1
ActiveSheet.Cells(intErsteLeereZeile, 2).Resize(, 13) = Array( _
txtLfdNr, CDate(txtDatum), txtKW, cboVerantwortlich, cboKategorie, _
txtThema.Value, txtBezeichnung, txtMaßnahmen, cboPrio, txtTermin, _
cboFortschritt, cboStatus, cboHerkunft)
Unload frmMaske
Blattschutz_aktivieren
End Sub

Gruß
Rudi

Anzeige
AW: nebenbei
28.02.2014 16:12:38
Stefan
Habe das ganze nun hiermit lösen können - Vielen Dank für eure Hilfe!
Private Sub UserForm_Initialize()
ActiveSheet.Protect Password:="xxxx", UserInterfaceOnly:=True, _
DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
End Sub

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige