Hallo Sonja,
es ist kein Problem den Blattschutz mit der Anlage eines neuen Blatts zu gestalten. Wenn du in einem VBA-Projekt mit geschützten Blättern arbeiten willst, dann ist es sinnvoll, die entsprechenden Makros in einem eigenen Modul des Projekts anzulegen. Diese Makros kann man dann von überall im VBA-Projekt aufrufen.
Da du sehr große Zellbereiche bearbeiten willst ist ratsam auch gleich eine Fixierung des Fensters der neuen Datei einzubauen.
In meinem Beispiel zu den Hyperlinks baust du dann die Zeile ein um das Blatt zu schützen:
'Neues Blatt umbenennen und Daten eintragen
With wksNeu
.Name = strTabName
'nachfolgend Eingaben im neuen Blatt nur zum Testen
.Cells(2, 1).Value = "Produkt"
.Cells(2, 2).Value = "Volumen"
.Cells(2, 3).Value = "Material"
.Cells(3, 1).Value = Me.TextBox1
.Cells(3, 2).Value = Me.TB2
.Cells(3, 3).Value = Me.TB3
End With 'wksNeu
'Blatt schützen
Call BlattSchutz\_EIN\_Neu(wks:=wksNeu, PW:=True)
'Daten in Produktliste eintragen
Wenn du mit festen Kennwörtern im Code arbeitest, dann muss du auch das VBA-Projekt per Kennwort schützen, sonst kann jeder den Code einsehen.
Gruß
Franz
'Code zum Blattschutz in einem allgemeinen Modul
Option Explicit
Private Const BlattKW = "MeinpassWort" 'Kennwort ggf. anpassen
Sub BlattSchutz\_EIN\_Neu(wks As Worksheet, Optional PW As Boolean)
'Blattschutz für neues Blatt einrichten-inkl. Fensterfixierung
Dim strPW As String
With wks
'Zellbereiche: Schutz aufheben
.Range("A31:ECA38,A75:ECA83").Locked = False
'Tabellenblatt fixieren, falls Zustand = nicht fixiert.
With ActiveWindow
If .FreezePanes = False Then
.ScrollColumn = 1
.ScrollRow = 1
Range("B5").Select 'Zelle für Fenster-Fixierung ggf. anpassen
.FreezePanes = True
End If
End With
'Blatt schützen
.Protect Password:=IIf(PW = True, BlattKW, ""), DrawingObjects:=True, \_
Contents:=True, Scenarios:=True
.EnableSelection = xlNoRestrictions
Range("A31").Select
End With
End Sub
Sub BlattSchutz\_EIN(wks As Worksheet, Optional PW As Boolean)
'Blatt schützen
With wks
.Protect Password:=IIf(PW = True, BlattKW, ""), DrawingObjects:=True, \_
Contents:=True, Scenarios:=True
.EnableSelection = xlNoRestrictions
End With
End Sub
Sub BlattSchutz\_AUS(wks As Worksheet, Optional PW As Boolean)
'Blattschutz aufheben
If PW = True Then
wks.Unprotect Password:=BlattKW
Else
wks.Unprotect
End If
End Sub
'Admin-Makros für Blattschutz-Aktionen
'Diese müssen ggf. direkt aus dem VBA-Editor gestartet werden \_
- sie sind im Makro-Start-Dialog nicht verfügbar
Private Sub AktivesBlatt\_Schutzaus()
Call BlattSchutz\_AUS(wks:=ActiveSheet, PW:=True)
End Sub
Private Sub AktivesBlatt\_Schutzein()
Call BlattSchutz\_EIN(wks:=ActiveSheet, PW:=True)
End Sub
Private Sub AktivesBlatt\_Schutzein\_NEU()
'Makro um Blattschutz für aktives Tabellenblatt nachträglich einzurichten wie für neues Blatt
Call BlattSchutz\_EIN\_Neu(wks:=ActiveSheet, PW:=True)
End Sub