Clever-Excel-Forum

Normale Version: Excel Makro Index
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

Du kannst das Blatt ruhig geschützt lassen.
Man kann in Uwes Code den Schutz aufheben und setzen lassen.

Hier Uwes Code mit der Ergänzung den Blattschutz am Anfang aufzuheben und am Ende wieder zu setzen:

Code:
Private Sub Worksheet_Activate()
  Dim intSpalte As Integer, intZeile As Integer
  Dim intBlock As Integer, intBlockgroesse As Integer
  Dim oWs As Worksheet
  Me.Unprotect '  "Passwort"
  Me.UsedRange.Clear
  intSpalte = 1
  intZeile = 1
  For Each oWs In Worksheets
    If oWs.Name <> Me.Name Then
      Cells(intZeile, 1).Hyperlinks.Add _
        Anchor:=Cells(intZeile, 1), Address:="", _
        SubAddress:=oWs.Name & "!A1", _
        ScreenTip:="Klicken Sie auf den Hyperlink", _
        TextToDisplay:=oWs.Name
      intZeile = intZeile + 1
    End If
  Next oWs
  Columns(1).Sort Cells(1)
  intBlockgroesse = 40
  For intBlock = intBlockgroesse + 1 To intZeile Step intBlockgroesse
    intSpalte = intSpalte + 2
    Cells(intBlock, 1).Resize(intBlockgroesse).Cut Cells(1, intSpalte)
  Next intBlock
  Me.Protect '  "Passwort"
End Sub

Wenn der Blattschutz ein Passwort hat, dann muss Du im Code an den Stellen an denen Passwort steht diese mit Deinem Passwort ersetzen und das Hochkomma (nicht die Anführungszeichen) vor Passwort löschen.
Hallo,

die Angabe der Subadresse habe ich verbessert, damit die Hyperlinks auch bei Blattnamen, die Leerzeichen oder "!" enthalten, funktionieren:

Code:
Private Sub Worksheet_Activate()
  Dim intSpalte As Integer, intZeile As Integer
  Dim intBlock As Integer, intBlockgroesse As Integer
  Dim oWs As Worksheet
  Me.Unprotect '  "Passwort"
  Me.UsedRange.Clear
  intSpalte = 1
  intZeile = 1
  For Each oWs In Worksheets
    If oWs.Name <> Me.Name Then
      Cells(intZeile, 1).Hyperlinks.Add _
        Anchor:=Cells(intZeile, 1), Address:="", _
        SubAddress:=oWs.Cells(1).Address(External:=True), _
        ScreenTip:="Klicken Sie auf den Hyperlink", _
        TextToDisplay:="'" & oWs.Name
      intZeile = intZeile + 1
    End If
  Next oWs
  Columns(1).Sort Cells(1)
  intBlockgroesse = 15
  For intBlock = intBlockgroesse + 1 To intZeile Step intBlockgroesse
    intSpalte = intSpalte + 2
    Cells(intBlock, 1).Resize(intBlockgroesse).Cut Cells(1, intSpalte)
  Next intBlock
  Me.Protect '  "Passwort"
End Sub

Gruß Uwe
cool danke nochmal euch beiden :)
Seiten: 1 2