Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
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

Makro mit Blattschutz

Makro mit Blattschutz
24.01.2014 14:09:24
Ulf
Moin, moin
Ich bin einfach zu blond.
In angefügter Datei habe ich das Blatt"Tabelle1" mit einem Blattschutz versehen.
Wenn ich jetzt eine Option auswählen möchte, bekomme ich immer den Hinweis:
"Die Zelle oder das Diagramm, die bzw. das Sie ändern möchten befindet sich auf einem schreibgeschüzten Blatt."
Ich weiß inzwischen das ich den Schutz mit dem Befehl ActiveSheet.unprotect und ActiveSheet.protect aufheben kann und das Makro dann ausgeführt wird.
Mein Problem:
An welche Stelle muss ich die Befehle schreiben, damit das Makro ohne Hinweis läuft.
https://www.herber.de/bbs/user/88961.xlsm
Gruß
Ulf
Makro vom Blatt"Tabelle1"
Private Sub OptionButton1_Click()
With Sheets("Tabelle1")
Select Case Range("b1")
Case "MMF"
.Columns(4).EntireColumn.Hidden = False
.Columns(5).EntireColumn.Hidden = True
.Columns(6).EntireColumn.Hidden = True
End Select
OptionButton8.Value = False
OptionButton9.Value = False
OptionButton10.Value = False
OptionButton11.Value = False
OptionButton12.Value = False
OptionButton13.Value = False
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End With
End Sub

Private Sub OptionButton2_Click()
With Sheets("Tabelle1")
Select Case Range("b1")
Case "135W"
.Columns(4).EntireColumn.Hidden = True
.Columns(5).EntireColumn.Hidden = False
.Columns(6).EntireColumn.Hidden = True
End Select
OptionButton4.Value = False
OptionButton5.Value = False
OptionButton6.Value = False
OptionButton7.Value = False
OptionButton11.Value = False
OptionButton12.Value = False
OptionButton13.Value = False
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End With
End Sub

Private Sub OptionButton3_Click()
With Sheets("Tabelle1")
Select Case Range("b1")
Case "200W"
.Columns(4).EntireColumn.Hidden = True
.Columns(5).EntireColumn.Hidden = True
.Columns(6).EntireColumn.Hidden = False
End Select
OptionButton4.Value = False
OptionButton5.Value = False
OptionButton6.Value = False
OptionButton7.Value = False
OptionButton8.Value = False
OptionButton9.Value = False
OptionButton10.Value = False
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End With
End Sub
Private Sub Optionbutton_Visible(Optional OP_direkt, Optional OP_1Weg, Optional OP_3Weg As  _
Boolean, _
Optional OP_FFC As Boolean)
'Ein-/Ausblenden der Tabellenblätter.
'Parameter muss nur für die einzublendenden Blätter mit Wert True übergeben werden.
OP_direkt.Value = OP_direkt
OP_1Weg.Value = OP_1Weg
OP_3Weg.Value = OP_3Weg
OP_FFC.Value = OP_FFC
End Sub

Private Sub SerNr_RowsHide(arrRows As Variant)
'Zeilen ausblenden in Blatt "Ser.Nr."
'in arrRows wird ein Array mit den auszublendenden Zeilennummern übergeben
'wird Array("0") als Wert für arrRows übergeben, dann werden alle Zeilen eingeblendet.
Dim intI As Integer
With Sheets("Ser.Nr.")
.Rows.Hidden = False
If arrRows(LBound(arrRows))  "0" Then
For intI = LBound(arrRows) To UBound(arrRows)
.Rows(arrRows(intI)).Hidden = True
Next intI
End If
End With
End Sub

Private Sub Ein_Aublenden(strOption As String)
'Tabellenblätter, Spalten und Zeilen werden ein- bzw. ausgeblendet.
Application.ScreenUpdating = False
Select Case strOption
Case "FLx50"
Call SerNr_RowsHide(Array("2:3", "5:6", "11:14"))
Case "FLx75"
Call SerNr_RowsHide(Array("2:3", "5:6", "11:14"))
Case "FL010"
Call SerNr_RowsHide(Array("2:3", "5:6", "11:14"))
Case "FL020"
Call SerNr_RowsHide(Array("3:3", "6:6", "12:14"))
End Select
End Sub

Private Sub OptionButton4_Change()
'FLx50
Call Ein_Aublenden(strOption:="FLx50")
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End Sub

Private Sub OptionButton5_Change()
'FLx75
Call Ein_Aublenden(strOption:="FLx75")
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End Sub

Private Sub OptionButton6_Change()
'FL010
Call Ein_Aublenden(strOption:="FL010")
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End Sub

Private Sub OptionButton7_Change()
'FL020
Call Ein_Aublenden(strOption:="FL020")
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Blattschutz
24.01.2014 14:40:46
EtoPHG
Hallo Ulf,
Ganz einfach, vor der ersten Veränderung von Blattinhalten (also z.B. Zeilen/Spalten verstecken). Falls die OptionButtons mit LinkedCell auf Tabellenzellen zeigen, könnte das Problem auch bei diesen liegen. Du kannst doch im Debugger überprüfen, auf welcher Codezeile die Meldung auftritt.
Gruess Hansueli

AW: Makro mit Blattschutz
24.01.2014 17:33:13
Ulf
Der Debugger meldet sich nicht.
Deine AW habe ich so verstanden, das ich vor jedem hidden das ActiveSheet.Unprotect gesetzt habe (siehe unten).
Leider ohne Erfolg.
Gruß
Ulf
Private Sub OptionButton1_Click()
With Sheets("Tabelle1")
Select Case Range("b1")
Case "MMF"
ActiveSheet.Unprotect
.Columns(4).EntireColumn.Hidden = False
.Columns(5).EntireColumn.Hidden = True
.Columns(6).EntireColumn.Hidden = True
ActiveSheet.Protect
End Select
OptionButton8.Value = False
OptionButton9.Value = False
OptionButton10.Value = False
OptionButton11.Value = False
OptionButton12.Value = False
OptionButton13.Value = False
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End With
End Sub

Private Sub OptionButton2_Click()
With Sheets("Tabelle1")
Select Case Range("b1")
Case "135W"
ActiveSheet.Unprotect
.Columns(4).EntireColumn.Hidden = True
.Columns(5).EntireColumn.Hidden = False
.Columns(6).EntireColumn.Hidden = True
ActiveSheet.Protect
End Select
OptionButton4.Value = False
OptionButton5.Value = False
OptionButton6.Value = False
OptionButton7.Value = False
OptionButton11.Value = False
OptionButton12.Value = False
OptionButton13.Value = False
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End With
End Sub

Private Sub OptionButton3_Click()
With Sheets("Tabelle1")
Select Case Range("b1")
Case "200W"
ActiveSheet.Unprotect
.Columns(4).EntireColumn.Hidden = True
.Columns(5).EntireColumn.Hidden = True
.Columns(6).EntireColumn.Hidden = False
ActiveSheet.Protect
End Select
OptionButton4.Value = False
OptionButton5.Value = False
OptionButton6.Value = False
OptionButton7.Value = False
OptionButton8.Value = False
OptionButton9.Value = False
OptionButton10.Value = False
OptionButton14.Value = False
OptionButton15.Value = False
OptionButton16.Value = False
OptionButton17.Value = False
End With
End Sub

Anzeige
AW: Makro mit Blattschutz
24.01.2014 17:40:23
mumpel
Hallo!
Und wo ist das Kennwort? ActiveSheet.Unprotect "Kennwort"
Gruß, René

Wieso PW ist doch optional? owT
24.01.2014 18:56:58
Ulf

AW: Wieso PW ist doch optional? owT
24.01.2014 19:12:52
mumpel
Bist Du sicher dass Tabelle1 auch aktiv ist? Wenn Du "ActiveSheet.Unprotect" nutzt sollte Tabelle1 auch aktiv sein. Sonst hebst Du das Kennwort der falschen Tabelle auf. Schreibe einfach .Unprotect und lass "ActiveSheet" davor weg.

Nachtrag
24.01.2014 19:35:05
mumpel
Das liegt m.E. daran dass Du den Blattschutz nur in einem Ereignismakro aufhebst. Die anderen Ereignismakros werden aber auch ausgelöst. Du musst also eine Prüfung einbauen welche prüft ob der Option-Button auch aktiv ist und nur dann den Code ausführen lassen.

Anzeige
AW: Nachtrag
24.01.2014 20:11:44
Ulf
@mumpel
ich bin zu doof - dein Code klappt auch nicht
ich versuch jetzt Feierabend zu machen - 6h VBA-Problem macht kirre
Gruß
Ulf

Bei mir schon ;) owT.
24.01.2014 20:21:29
mumpel

AW: Nachtrag
25.01.2014 18:41:10
mumpel
Problem kannst Du wie folgt lösen:
Die Zellen, welche mit den Auswahlfeldern verknüpft sind, müssen ZWINGEND entschützt werden. Also in "Zellen formatieren"-Reiter "Schutz" den Haken entfernen bei "Gesperrt". Nur dann können die Werte für die Auswahlfelder in die Zellen geschrieben werden (das Eintragen der Werte geschieht immer vor dem Aufheben des Tabellenschutzes).

Das war der entscheidene Hinweis - Danke owT
27.01.2014 08:06:16
Ulf

War im 2, Satz in 1. Antwort erwähnt :-( (owT)
27.01.2014 09:39:02
EtoPHG

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige