180 Aufrufe
Gefragt in Tabellenkalkulation von

Hallo,

ich kämpfe mit dem erstellen eines Inhaltsverzeichnisses, besser gesagt mit den Links die ich dabei auch einfügen lasse.

Sub InhaltsverzeichnisErstellen()
Dim i, LetzteZeile As Integer
ActiveWorkbook.Sheets.Add Before:=Worksheets(1)
ActiveSheet.Name = "Inhalt"
Range("A1").Value = "Inhaltsverzeichnis"
ActiveCell.Offset(2, 0).Select
For i = 2 To ActiveWorkbook.Sheets.Count
ActiveCell.Value = i - 1
ActiveCell.Offset(0, 1).Value = Sheets(i).Name
ActiveCell.Offset(1, 0).Select
Next i
Range("B3").Activate
Do Until ActiveCell.Value = ""
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:="", SubAddress:= _
ActiveCell.Value & "!A1", TextToDisplay:=ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Sobald das Blatt eine Nummer hat und keinen Text mehr, bekomme ich einen Laufzeitfehler 5, Ungültiger Prozeduraufruf oder Argument,... im Bereich ActiveSheet.Hyperlink.Add ....

Ich habe überhaupt keinen Plan, was ich ändern muss.

Bitte um Hilfe,

Danke schon Vorab für eure Mühe!

Gruß

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo,

versuche es mal so:

Sub InhaltsverzeichnisErstellen_Neu()
Dim i As Integer
Dim iZeile As Integer
ActiveWorkbook.Sheets.Add Before:=Worksheets(1)
ActiveSheet.Name = "Inhalt"
Range("A1").Value = "Inhaltsverzeichnis"
iZeile = 2

For i = 2 To ActiveWorkbook.Sheets.Count
  iZeile = iZeile + 1
  Cells(iZeile, 1) = i - 1
  ActiveSheet.Hyperlinks.Add Anchor:=Cells(iZeile, 2), Address:="", SubAddress:=Worksheets(i).Name & "!A1", TextToDisplay:=Worksheets(i).Name
Next i

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von

Hallo M.O.,
danke, das funktioniert super!

jetzt bastle ich natürlich noch daran, in jedem Blatt ab dem dritten Blatt einen Link zurück zum Inhaltsverzeichnis
(im 1. Blatt steht das Inhaltsverzeichnis, im zweiten Blatt die Daten, da brauch ich keinen Link)

Dim Text As String
Dim Sheets, i As Integer
Sheets = ActiveWorkbook.Sheets.Count

For i = 3 To Sheets Step 1
Text = Range("A1").Value
Worksheets(i).Hyperlinks.Add Range("A1"), Address:="", SubAddress:="Inhalt!A1", TextToDisplay:=Text
Next i

natürlich funktioniert das so wie ich denke nicht, war ja fast schon klar :-)

kannst du da bitte nochmals drüber schauen!
Danke für deine Mühe!

Gruß

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo,

versuche es mal so:

Sub zurueck()
'Hyperlink zum 1. Blatt in der Arbeitsmappe einfügen
Dim i As Integer
    
For i = 3 To ActiveWorkbook.Sheets.Count Step 1
   With Worksheets(i)
        .Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:=Worksheets(1).Name & "!A1", TextToDisplay:="Inhaltsverzeichnis"
   End With
Next i

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von
Danke M.O.,

funktioniert natürlich einwandfrei!

Danke, Danke!

'Gruß´
...