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

Inhaltsverz.+Blattschutz A1 wieder gesperrt soll f

Inhaltsverz.+Blattschutz A1 wieder gesperrt soll f
15.07.2018 05:49:44
Werner
Hallo & Guten Morgen, ich habe ein Modul Inhaltsverzeichnis, wenn ich es neu erstellen lasse und dann Blattschutz (anderes Modul) dann ist immer A1 wieder gesperrt, dass ist lästig und muss von Hand häckchen Gesperrt raus nehmen. . auch zwei Tabellenblätter haben dann eine Fixierun. Kann mir jeman weiter helfen? Ecxel Version 2014.
Liebe Grüße Werner
Anlage siehe unten: VBA Inhaltsverzeichnis und VBA Blattschutz
Option Explicit
Sub TableOfContents()
Dim i As Integer
Dim ws As Worksheet
Dim intWS As Integer
Dim lngRow As Long
Dim intCol As Integer
' Bildschirmaktualisierung aufheben
Application.ScreenUpdating = False
' Fensterfixierung aufheben
Call DeleteFreezePanes
' Falls bereits ein Tabellenblatt mit dem Namen
' "Inhaltsverzeichnis" vorhanden ist, dieses löschen
For Each ws In Worksheets
If ws.Name = "Inhaltsverzeichnis" Then
ws.Delete
End If
Next ws
' Variablen für Zähler aufbereiten
intWS = Worksheets.Count
lngRow = 1
intCol = 1
' Tabelle "Inhaltsverzeichnis" an letzter Stelle
' in der Mappe einfügen
Worksheets.Add After:=Worksheets(intWS)
Worksheets(intWS + 1).Name = "Inhaltsverzeichnis"
For i = 1 To intWS
' In jedem Tabellenblatt die Navigationszeile
' mit Link zum Inhaltsverzeichnis erstellen
With Worksheets(i)
' Alte Navigationszeile löschen
If .Range("A1").Value = "Inhaltsverzeichnis" Then
.Rows(1).Delete
End If
' Neue Navigationszeile einfügen
.Rows(1).Insert
.Hyperlinks.Add _
Anchor:=.Range("A1"), _
Address:="", _
SubAddress:="Inhaltsverzeichnis!A1", _
TextToDisplay:="Inhaltsverzeichnis"
' Hyperlinks im Tabellenblatt "Inhaltsverzeichnis"
' erstellen
Worksheets(intWS + 1).Hyperlinks.Add _
Anchor:=Cells(lngRow, intCol), _
Address:="", _
SubAddress:="'" & .Name & "'!A1", _
TextToDisplay:=.Name
' Bei 10 Einträgen die Spalte wechseln
If i Mod 10 = 0 Then
Worksheets(intWS + 1).Columns(intCol).AutoFit
intCol = intCol + 1
lngRow = 0
End If
End With
lngRow = lngRow + 1
Next i
' Tabelle "Inhaltsverzeichnis an erste Stelle verschieben
Worksheets("Inhaltsverzeichnis").Move Before:=Worksheets(1)
' Fensterfixierung festlegen
Call AddFreezePanes
' Das Tabellenblatt "Inhaltsverzeichnis" aktivieren
Worksheets(1).Activate
' Bildschirmaktualisierung wieder aktivieren
Application.ScreenUpdating = True
End Sub
Sub AddFreezePanes()
Dim i As Integer
Application.ScreenUpdating = False
For i = 2 To Worksheets.Count
Worksheets(i).Activate
Range("A2").Select
ActiveWindow.FreezePanes = True
Next i
Application.ScreenUpdating = True
End Sub
Sub DeleteFreezePanes()
Dim i As Integer
Application.ScreenUpdating = False
For i = 2 To Worksheets.Count
Worksheets(i).Activate
Range("A2").Select
ActiveWindow.FreezePanes = False
Next i
Application.ScreenUpdating = True
End Sub

>>>anderes Modul Option Explicit ' Immer zu empfehlen
Sub BlattSchutz()
' kennwort Makro
' Tastenkombination: Keine
Dim myPwd As String, myPwd2 As String
Dim wks As Worksheet
myPwd = Application.InputBox("Passwort eingeben")
myPwd2 = Application.InputBox("Wiederholung")
If myPwd2 = myPwd Then
For Each wks In ActiveWorkbook.Worksheets
wks.Protect Password:=myPwd, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingCells:=True, _
AllowFormattingColumns:=True, AllowFormattingRows:=True
Next wks
Else
MsgBox "Passwort falsch"
End If
End Sub

Sub freigeben()
' kennwort Makro
' Tastenkombination: Keine
Dim myPwd As String, myPwd2 As String
Dim wks As Worksheet
myPwd = Application.InputBox("Passwort eingeben")
myPwd2 = Application.InputBox("Wiederholung")
If myPwd2 = myPwd Then
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect Password:=myPwd
Next wks
Else
MsgBox "Passwort falsch"
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Inhaltsverz.+Blattschutz A1 wieder gesperrt soll f
15.07.2018 08:54:38
Oberschlumpf
Hi Werner,
Zelle A1 im neuen Inhaltsverzeichnis nicht sperren:
Änder diesen Code

Worksheets(intWS + 1).Name = "Inhaltsverzeichnis"

um in

With Worksheets(intWS + 1)
.Name = "Inhaltsverzeichnis"
.Range("A1").Locked = False
End With

Fixierung von zwei Tabellenblättern entfernen:
(wenn du damit meinst, für 2 Tabellenblätter den Blattschutz NICHT zu setzen)
Ander diesen Code

For Each wks In ActiveWorkbook.Worksheets
wks.Protect Password:=myPwd, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingCells:=True, _
AllowFormattingColumns:=True, AllowFormattingRows:=True
Next wks

um in

For Each wks In ActiveWorkbook.Worksheets
If wks.Name  "DeineTabelle1" And wks.Name  "DeineTabelle2" Then
wks.Protect Password:=myPwd, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingCells:=True, _
AllowFormattingColumns:=True, AllowFormattingRows:=True
End If
Next wks

Anstelle von "DeineTabelle1" + "DeineTabelle2" musst du natürlich die Namen der Tabellen eintragen, die du nicht mit Blattschutz versehen willst.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Inhaltsverz.+Blattschutz A1 wieder gesperrt soll f
15.07.2018 11:23:49
Werner
Moin Thorsten, Danke Dir! ich versuche es später, bin nebenbei am renovieren der Wohnung. Ich melde mich, wenns geklappt hat. GrußWerner
AW: Inhaltsverz.+Blattschutz A1 wieder gesperrt soll f
17.07.2018 07:15:31
Werner
Guten Morgen, Entschuldigung, ich bekomme es nicht hin, ich bekomme Thosten's vorschlag nicht hin. kann mir jemand helfen? wäre schön. Vielen Dank an Euch
AW: Inhaltsverz.+Blattschutz A1 wieder gesperrt soll f
17.07.2018 08:25:07
Oberschlumpf
Hi Werner,
hier geänderter Code, Teil 1:

Sub TableOfContents()
Dim i As Integer
Dim ws As Worksheet
Dim intWS As Integer
Dim lngRow As Long
Dim intCol As Integer
' Bildschirmaktualisierung aufheben
Application.ScreenUpdating = False
' Fensterfixierung aufheben
Call DeleteFreezePanes
' Falls bereits ein Tabellenblatt mit dem Namen
' "Inhaltsverzeichnis" vorhanden ist, dieses löschen
For Each ws In Worksheets
If ws.Name = "Inhaltsverzeichnis" Then
ws.Delete
End If
Next ws
' Variablen für Zähler aufbereiten
intWS = Worksheets.Count
lngRow = 1
intCol = 1
' Tabelle "Inhaltsverzeichnis" an letzter Stelle
' in der Mappe einfügen
Worksheets.Add After:=Worksheets(intWS)
With Worksheets(intWS + 1)
.Name = "Inhaltsverzeichnis"
.Range("A1").Locked = False
End With
For i = 1 To intWS
' In jedem Tabellenblatt die Navigationszeile
' mit Link zum Inhaltsverzeichnis erstellen
With Worksheets(i)
' Alte Navigationszeile löschen
If .Range("A1").Value = "Inhaltsverzeichnis" Then
.Rows(1).Delete
End If
' Neue Navigationszeile einfügen
.Rows(1).Insert
.Hyperlinks.Add _
Anchor:=.Range("A1"), _
Address:="", _
SubAddress:="Inhaltsverzeichnis!A1", _
TextToDisplay:="Inhaltsverzeichnis"
' Hyperlinks im Tabellenblatt "Inhaltsverzeichnis"
' erstellen
Worksheets(intWS + 1).Hyperlinks.Add _
Anchor:=Cells(lngRow, intCol), _
Address:="", _
SubAddress:="'" & .Name & "'!A1", _
TextToDisplay:=.Name
' Bei 10 Einträgen die Spalte wechseln
If i Mod 10 = 0 Then
Worksheets(intWS + 1).Columns(intCol).AutoFit
intCol = intCol + 1
lngRow = 0
End If
End With
lngRow = lngRow + 1
Next i
' Tabelle "Inhaltsverzeichnis an erste Stelle verschieben
Worksheets("Inhaltsverzeichnis").Move Before:=Worksheets(1)
' Fensterfixierung festlegen
Call AddFreezePanes
' Das Tabellenblatt "Inhaltsverzeichnis" aktivieren
Worksheets(1).Activate
' Bildschirmaktualisierung wieder aktivieren
Application.ScreenUpdating = True
End Sub

und hier geänderter Code, Teil 2:

Sub freigeben()
' kennwort Makro
' Tastenkombination: Keine
Dim myPwd As String, myPwd2 As String
Dim wks As Worksheet
myPwd = Application.InputBox("Passwort eingeben")
myPwd2 = Application.InputBox("Wiederholung")
If myPwd2 = myPwd Then
For Each wks In ActiveWorkbook.Worksheets
If wks.Name  "DeineTabelle1" And wks.Name  "DeineTabelle2" Then
wks.Protect Password:=myPwd, DrawingObjects:=True, _
Contents:=True, Scenarios:=True, AllowFormattingCells:=True, _
AllowFormattingColumns:=True, AllowFormattingRows:=True
End If
Next wks
Else
MsgBox "Passwort falsch"
End If
End Sub

Bitte beachten:
In Teil 2 musst du "DeineTabelle1" und "DeineTabelle2" umändern in die richtigen Blattnamen, da ich ja nicht weiß, wie die Tabellenblätter mit "Fixierung" heißen.
Hilfts?
Wenn nicht, zeig uns doch eine Bsp-Datei mit dem Code.
Ciao
Thorsten
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige