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

Tabellenblätter umbenennen und verlinken

Tabellenblätter umbenennen und verlinken
18.01.2016 14:00:25
jurank
Hallo zusammen,
in einer bestehenden Excel-Tabelle mit 150 Tabellenblättern möchte ich folgendes vornehmen:
1. Tabellenblätter Nr. 9 bis Nr. 150 entsprechend dem Inhalt in Zelle B2 des jeweiligen Blattes umbenennen.
2. Im Tabellenblatt Nr. 1 in Spalte A eine Liste erstellen lassen, in der in jeder Zeile ein Hyperlink auf ein Tabellenblatt enthalten sit, also Zelle A1 = Hyperlink auf Blatt Nr. 2, A2 Hyperlink auf Blatt Nr. 3 usw, in Summe dann 149 Zeilen und Hyperlinks.
Kann mir dazu jemand helfen?
Herzlichen Dank!!!
Grüße
jurank

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter umbenennen und verlinken
18.01.2016 14:16:55
ChrisL
Hi
Sub t()
Dim WS As Worksheet
Dim i As Integer
With ThisWorkbook
Set WS = .Worksheets("Tabelle1")
For i = 9 To 150
.Worksheets(i).Name = .Worksheets(i).Range("B2")
WS.Hyperlinks.Add Anchor:=WS.Cells(i - 8, 1), Address:="", SubAddress:= _
Worksheets(i).Name & "!A1", TextToDisplay:=Worksheets(i).Name & "!A1"
Next i
End With
End Sub

Ohne Plausibilisierung d.h. u.a. die Zellen B2 müssen als Namen geeignet sein (keine Sonderzeichen, nicht leer usw.).
cu
Chris

AW: Tabellenblätter umbenennen und verlinken
18.01.2016 14:22:43
Sepp
Hallo Jurank,
in ein allgemeines Modul.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub makeLinks()
Dim lngIndex As Long

With ThisWorkbook
  For lngIndex = 2 To .Worksheets.Count
    With .Worksheets(lngIndex)
      If IsValidSheetName(.Range("B2").Text) Then
        .Name = .Range("B2").Text
        Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Cells(lngIndex - 1, 1), _
          Address:="", SubAddress:="#'" & .Name & "'!A1", TextToDisplay:=.Name
      End If
    End With
  Next
End With
End Sub

Private Function IsValidSheetName(ByVal strName As String) As Boolean
Dim objRegExp As Object

Set objRegExp = CreateObject("vbscript.regexp")

With objRegExp
  .Global = True
  .Pattern = "^[^\/\\:\*\?\[\]]{1,31}$"
  .IgnoreCase = True
  IsValidSheetName = .test(strName)
End With

Set objRegExp = Nothing

End Function

Gruß Sepp

Anzeige
Muss For lngIndex = 9 To ... heißen! o.T.
18.01.2016 14:23:43
Sepp
Gruß Sepp

AW: Muss For lngIndex = 9 To ... heißen! o.T.
19.01.2016 11:55:43
jurank
Tausend Dank, perfekt!
Eine weitere Frage: Ergänzend wollte ich in die Tabellenblätter 9 bis 150 jeweils in Zelle D3 einen Hyperlink einfügen, der immer zurück auf die Liste in Blatt eins führt. Habe dabei bemerkt, dass ich das bei gruppierten Blättern nicht kann (Excel-Befehl ausgegraut). Muss das auch per Makro gelöst werden oder gibts eine andere Lösung?

AW: Muss For lngIndex = 9 To ... heißen! o.T.
19.01.2016 12:02:04
Sepp
Hallo Jurank,
das geht doch gleich im selben Makro.
Sub makeLinks()
Dim lngIndex As Long

With ThisWorkbook
  For lngIndex = 2 To .Worksheets.Count
    With .Worksheets(lngIndex)
      If IsValidSheetName(.Range("B2").Text) Then
        .Name = .Range("B2").Text
        .Hyperlinks.Add Anchor:=.Range("D3"), Address:="", _
          SubAddress:="#'" & Worksheets(1).Name & "'!A1", TextToDisplay:="Übersicht"
        
        Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Cells(lngIndex - 1, 1), _
          Address:="", SubAddress:="#'" & .Name & "'!A1", TextToDisplay:=.Name
      End If
    End With
  Next
End With
End Sub

Gruß Sepp

Anzeige
AW: Muss For lngIndex = 9 To ... heißen! o.T.
20.01.2016 11:52:52
jurank
Vielen Dank Sepp, für die Ergänzung! Ich will ja nicht unersättlich wirken, aber...
Kann man das Einfügen der Hyperlinks auch so anpassen, dass nur eingeblendete Blätter den Hyperlink eingefügt bekommen, ausgeblendete aber nicht?

Link nur sichtbare Blätter
20.01.2016 13:28:19
Sepp
Hallo Jurank,
kein Problem.
Sub makeLinks()
Dim lngIndex As Long

With ThisWorkbook
  For lngIndex = 9 To .Worksheets.Count
    With .Worksheets(lngIndex)
      If IsValidSheetName(.Range("B2").Text) Then
        .Name = .Range("B2").Text
        .Hyperlinks.Add Anchor:=.Range("D3"), Address:="", _
          SubAddress:="#'" & Worksheets(1).Name & "'!A1", TextToDisplay:="Übersicht"
        
        If .Visible = xlSheetVisible Then
          Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Cells(lngIndex - 1, 1), _
            Address:="", SubAddress:="#'" & .Name & "'!A1", TextToDisplay:=.Name
        End If
      End If
    End With
  Next
End With
End Sub

Gruß Sepp

Anzeige
AW: Link nur sichtbare Blätter
20.01.2016 14:58:40
jurank
Und nochmal dankdankdank! Aber Mist, jetzt hab ich das Progrämmle in meine Zieldatei eingefügt, die Hyperlinks werden auch schön eingetragen wo ichs will, aber sie führen nirgednwo hin. Also zwar auf eine Zelle A1, aber in keines der Blätter der Datei. Ich hab das Programm so verstanden, dass der Befehl zur Verlinkung mit Bezeichnung "Übersicht" immer auf das erste Worksheet geht, unabhängig davon wie das heißt. Kann/muss ich den Namen des ersten Blatts ggfs. explizit im Code angeben?
Grüße
jurank

AW: Link nur sichtbare Blätter
20.01.2016 15:11:01
Sepp
Hallo Jurank,
kann ich nicht nachvollziehen, bei mir werden alle Links korrekt erstellt und sie funktionieren auch.
Gruß Sepp

Anzeige
AW: Link nur sichtbare Blätter
20.01.2016 15:27:07
jurank
Oh nein...ich hatte das erste Tabellenblatt, auf das die Links verweisen, ausgeblendet. Damit lief der Link augenscheinlich nirgendwo hin. Sorry, also funktioniert alles bestens.

137 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige