Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1336to1340
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 mit VBA aufheben und setzen

Blattschutz mit VBA aufheben und setzen
18.11.2013 12:31:49
Dominic
Hi Leute,
ich habe folgende Makros:
Sub Blattschutz()
ActiveSheet.Protect Password:="TestPW", UserInterfaceOnly:=True, DrawingObjects:=True,  _
Contents:=True, Scenarios:=True
End Sub

Sub BlattschutzAus()
ActiveSheet.Unprotect Password:="TestPW"
End Sub

Und im folgenden Makro möchte ich zunächst den Blattschutz aufheben, damit Excel die Spalten & Zeilen ausblenden kann, danach soll der Blattschutz wieder gesetzt werden.
Das funktioniert bei mir jedoch nicht.
Woran liegt das?
Sub SpalteAusblenden()
Call BlattschutzAus
If [H4] = 1 Then
Range("F:J").EntireColumn.Hidden = True
Range("7:8").EntireRow.Hidden = True
Range("E6").Select
ActiveCell.FormulaR1C1 = "100%"
Range("E7").Select
ActiveCell.FormulaR1C1 = "0%"
Range("E8").Select
ActiveCell.FormulaR1C1 = "0%"
ElseIf [H4] = 2 Then
Range("F:J").EntireColumn.Hidden = True
Range("F:G").EntireColumn.Hidden = False
Range("8:8").EntireRow.Hidden = True
Range("7:7").EntireRow.Hidden = False
Range("E6").Select
ActiveCell.FormulaR1C1 = "80%"
Range("E7").Select
ActiveCell.FormulaR1C1 = "20%"
Range("E8").Select
ActiveCell.FormulaR1C1 = "0%"
ElseIf [H4] = 3 Then
Range("F:J").EntireColumn.Hidden = True
Range("F:I").EntireColumn.Hidden = False
Range("6:8").EntireRow.Hidden = False
Range("E6").Select
ActiveCell.FormulaR1C1 = "50%"
Range("E7").Select
ActiveCell.FormulaR1C1 = "35%"
Range("E8").Select
ActiveCell.FormulaR1C1 = "15%"
End If
Range("A1:I56").Calculate
Call Blattschutz
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz mit VBA aufheben und setzen
18.11.2013 12:50:22
Klaus
Hi Dominic,
"Userinterfaceonly = true" bedeutet, dass VBA auch bei geschütztem Blatt herumändern darf wie es möchte. Es sollte also so wie es ist bereits funktionieren.
Ich vermute, dein Fehler liegt woanders als im Blattschutz! Kannst du die Datei hochladen?
Grüße,
Klaus M.vdT.

AW: Blattschutz mit VBA aufheben und setzen
18.11.2013 12:58:26
Dominic
Hi Klaus,
manchmal kann es so einfach sein. Dein Hinweis, dass "Userinterfaceonly = true" ermöglicht, dass VBA alles andere eigentlich durchführen kann, hat mich zur Problemlösung gebracht.
Meine Makros sind einem Formularsteuerelement zugewiesen, dessen Zellverknüpfung auf einer Zelle lag, die jedoch "geschützt" war. Als ich die Zelle gerade freigegeben habe funktioniert mein Makro zum Spalten ausblenden nun auch bei aktiviertem Blattschutz.
Danke! :)

Anzeige
AW: Blattschutz mit VBA aufheben und setzen
18.11.2013 13:00:55
Dominic
Und das Formularsteuerelement kann selbst auch geschützt werden. Das hatte ich nicht bedacht. Funktioniert nun alles wie gewünscht.

Danke für RÜ, und weiteres ...
18.11.2013 13:17:29
Klaus
Hallo Dominic,
freut mich dich zur Selbsthilfe angestoßen zu haben, danke für die Rückmeldung!
Aber wenn wir schon dabei sind, brennen mir ein paar Sachen unter den Fingernägeln:
1) bitte auf "select" und "activate" verzichten, dass sind echte Bremsen!
2) wenn du nicht auf eine R1C1-Formel verweist, benutzte Value statt FormulaR1C1
3) statt Range(XX).entireRow/EntireColumn verwende direkt Rows und Columns
4) nicht [H4] notieren, das bremst auch nur.
5) IF/ElseIf ist gut, aber CaseSelect ist übersichtlicher.
6) Vergiss die Punkte 1-5, solange du dir mit dem Makrorekorder selber helfen kannst machst du alles richtig!
Hier mal der überarbeitete Code:
Sub SpalteAusblenden()
'Call BlattschutzAus
Select Case Range("H4").Value
Case 1
Columns("F:J").Hidden = True
Rows("7:8").EntireRow.Hidden = True
Range("E6").Value = "100%"
Range("E7").Value = "0%"
Range("E8").Value = "0%"
Case 2
Columns("F:J").Hidden = True
Columns("F:G").Hidden = False
Rows("8:8").Hidden = True
Rows("7:7").Hidden = False
Range("E6").Value = "80%"
Range("E7").Value = "20%"
Range("E8").Vale = "0%"
Case 3
Columns("F:J").Hidden = True
Columns("F:I").Hidden = False
Rows("6:8").Hidden = False
Range("E6").Value = "50%"
Range("E7").Value = "35%"
Range("E8").Value = "15%"
Case Else
MsgBox ("Bitte einen Wert in H4 eingeben!")
End Select
Range("A1:I56").Calculate
'Call Blattschutz
End Sub
Grüße,
Klaus M.vdT.
Anzeige

68 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige