Microsoft Excel

Herbers Excel/VBA-Archiv

Blätter mit generierten Hyperlinks einblenden


Betrifft: Blätter mit generierten Hyperlinks einblenden
von: Chris
Geschrieben am: 28.11.2018 12:38:33

Hi zusammen,

ich hatte dieses Thema schon mal gepostet und auch bereits von Herbert Grom einiges an Hilfe bekommen (danke nochmal dafür!). Leider habe ich noch nicht die endgültige Lösung gefunden. Was wohl auch an meiner Beschreibung des Themas lag!

Zuletzt hatte mir Herbert folgenden Code gebaut:

Sub Main()
   Dim lngTMP As Long, sTxt$, sWks$, sRng$, iPos%
   On Error GoTo ende
   Application.EnableEvents = False
      For lngTMP = 5 To Cells(Rows.Count, 3).End(xlUp).Row
         sTxt = Split(Split(Cells(lngTMP, 3).Formula, "(""")(1), """")(0)
         iPos = InStr(1, sTxt, "!")
         sWks = Left(sTxt, iPos - 1)
         sRng = Mid(sTxt, iPos + 1, 100)
         Cells(lngTMP, 4).Value = Sheets(sWks).Range(sRng)
         
      Next lngTMP
ende:
   Application.EnableEvents = True
End Sub

Dieser zerlegt eine =Hyperlink() Formel in Spalte C in einen Text in Spalte D. Der Text soll auch genauso in Spalte D stehen, nur eben als Hyperlink. Das Problem ist, dass ich einen reinen Hyperlink für ein anderes Makro in Spalte D benötige, welches eben nicht mit einem durch die Formel =Hyperlink() generierten Hyperlink arbeiten kann.

Somit soll also der Text wie er durch das oben stehende Makro in Spalte D geschrieben wird, dort als Hyperlink stehen (Address) und als Subaddress soll "#'" & "Text aus Spalte D" & "'!A1" stehen.

Vielen Dank für Eure Unterstützung!

Beste Grüße

  

Betrifft: mehrfach..
von: UweD
Geschrieben am: 28.11.2018 13:14:58




  

Betrifft: AW: Blätter mit generierten Hyperlinks einblenden
von: Herbert Grom
Geschrieben am: 28.11.2018 17:32:25

Hallo Chris,

und welche Adresse soll der Hyperlink in Spalte D haben?

Servus


  

Betrifft: AW: Blätter mit generierten Hyperlinks einblenden
von: Chris
Geschrieben am: 28.11.2018 18:35:12

Hallo Herbert,

der hyperlink soll die Adresse des in Spalte C wiedergegebenen Tabellenblatts haben. Anbei noch ein Screenshot, was in Spalte C steht:


Falls es das irgendwie einfacher macht, könnte ich auch einfach in Spalte C folgendes machen:


Wichtig ist nur, dass am Ende in Spalte D ein Hyperlink steht, welcher als Text nur das hat was in Spalte C steht (hier "Schritt 1") aber als Adresse eben das entsprechende Tabellenblatt (also '#Sschritt 1!"). Außerdem müsste das Makro so sein, dass sich die Spalte D automatisch verändert, wenn sich etwas in Spalte C ändert.

Als Hintergrund nochmal kurz. Ich möchte in meiner Arbeitsmappe alle Tabellenblätter ausblenden. Diese sollen sich nur einblenden, wenn man auf einen Hyperlink zum jeweiligen Tabellenblatt klickt. Dies funktioniert aber nur, wenn man einen "normalen" Hyperlink hat und eben nicht mit der Formel =Hyperlink(). Deshalb brauche ich ein Makro, welches mir in Spalte D einen normalen Hyperlink schreibt. Erschwerend kommt halt dazu, dass sich die Arbeitsschritte verändern. Mit Bezug auf die Bilder heißt das, dass Spalte C veränderlich ist, je nachdem, in welchem Arbeitsschritt man gerade ist.


  

Betrifft: AW: Blätter mit generierten Hyperlinks einblenden
von: Herbert Grom
Geschrieben am: 28.11.2018 18:45:16

Hallo Chris,

probiers mal damit:

Sub Main()
   Dim lngTMP As Long, sTxt$, sWks$, sRng$, iPos%
   On Error GoTo ende
   Application.EnableEvents = False
      For lngTMP = 5 To cells(Rows.Count, 3).End(xlUp).Row
         sTxt = Split(Split(cells(lngTMP, 3).Formula, "(""")(1), """")(0)
         iPos = InStr(1, sTxt, "!")
         sWks = Left(sTxt, iPos - 1)
         sRng = Mid(sTxt, iPos + 1, 100)
         
         ActiveSheet.Hyperlinks.Add Anchor:=Selection, _
               Address:="", _
               SubAddress:="'" & cells(lngTMP, 3).Value & "'!A5", _
               TextToDisplay:=cells(lngTMP, 3).Value
      Next lngTMP
ende:
   Application.EnableEvents = True
End Sub
Servus


  

Betrifft: AW: Und, funktioniert es nun wie gewünscht? owt
von: Herbert Grom
Geschrieben am: 29.11.2018 10:55:11

,,


  

Betrifft: AW: Und, funktioniert es nun wie gewünscht? owt
von: Chris
Geschrieben am: 29.11.2018 12:07:16

Hi Herbert,

ja jetzt sieht das schon sehr gut aus!

Zwei Sachen habe ich jedoch noch. Erstens arbeitet das Makro nur Zelle für Zelle. Ist es möglich, dass es die ganze Spalte D soweit ausfüllt, wie in Spalte C etwas steht? Zweitens, wenn sich der Bezug in Spalte C ändert, ändert er sich in Spalte D nicht automatisch mit. ich nehme an, dass man das Makro so einstellen kann, dass es permanent läuft und den Hyperlink ändert, wenn sich in Spalt C etwas ändert. Od er geht das so nicht?

Nochmal riesen Dank!


  

Betrifft: AW: Und, funktioniert es nun wie gewünscht? owt
von: Herbert Grom
Geschrieben am: 29.11.2018 12:30:00

Ist es möglich, dass es die ganze Spalte D soweit ausfüllt, wie in Spalte C etwas steht?

Das tut es bereits in dieser Zeile:

For lngTMP = 5 To cells(Rows.Count, 3).End(xlUp).Row

wenn sich der Bezug in Spalte C ändert, ändert er sich in Spalte D nicht automatisch mit

Das tut er auch, wenn du den Bezug änderst, bevor du das Makro startest!

Servus


  

Betrifft: AW: Und, funktioniert es nun wie gewünscht? owt
von: Chris
Geschrieben am: 30.11.2018 12:54:49

Hallo Herbert,

das Makro stoppt immer nach dem ersten Eintrag in Spalte C und nicht nach dem letzten. Ich muss quasi jede Zeile einzeln durcharbeiten.

Dass das Makro nach dem erneuten Durchlauf die Veränderungen in Spalte C berücksichtigt, ist mir klar. Daraus ziehe ich, dass es nicht möglich ist, das Makro quasi permanent laufen zu lassen, so dass es auf Veränderungen in der Spalte C reagiert, wenn diese passieren. Stimmt das so?

Danken und Gruß
Christopher


  

Betrifft: AW: Und, funktioniert es nun wie gewünscht? owt
von: Chris
Geschrieben am: 30.11.2018 10:42:31

Hi Herbert,

ja jetzt sieht das schon sehr gut aus!

Zwei Sachen habe ich jedoch noch. Erstens arbeitet das Makro nur Zelle für Zelle. Ist es möglich, dass es die ganze Spalte D soweit ausfüllt, wie in Spalte C etwas steht? Zweitens, wenn sich der Bezug in Spalte C ändert, ändert er sich in Spalte D nicht automatisch mit. ich nehme an, dass man das Makro so einstellen kann, dass es permanent läuft und den Hyperlink ändert, wenn sich in Spalt C etwas ändert. Od er geht das so nicht?

Nochmal riesen Dank!


  

Betrifft: AW: Blätter mit generierten Hyperlinks einblenden
von: Chris
Geschrieben am: 28.11.2018 18:46:55

Hallo Herbert,

der hyperlink soll die Adresse des in Spalte C wiedergegebenen Tabellenblatts haben. Anbei noch ein Screenshot, was in Spalte C steht:


Falls es das irgendwie einfacher macht, könnte ich auch einfach in Spalte C folgendes machen:


Wichtig ist nur, dass am Ende in Spalte D ein Hyperlink steht, welcher als Text nur das hat was in Spalte C steht (hier "Schritt 1") aber als Adresse eben das entsprechende Tabellenblatt (also '#Sschritt 1!"). Außerdem müsste das Makro so sein, dass sich die Spalte D automatisch verändert, wenn sich etwas in Spalte C ändert.

Als Hintergrund nochmal kurz. Ich möchte in meiner Arbeitsmappe alle Tabellenblätter ausblenden. Diese sollen sich nur einblenden, wenn man auf einen Hyperlink zum jeweiligen Tabellenblatt klickt. Dies funktioniert aber nur, wenn man einen "normalen" Hyperlink hat und eben nicht mit der Formel =Hyperlink(). Deshalb brauche ich ein Makro, welches mir in Spalte D einen normalen Hyperlink schreibt. Erschwerend kommt halt dazu, dass sich die Arbeitsschritte verändern. Mit Bezug auf die Bilder heißt das, dass Spalte C veränderlich ist, je nachdem, in welchem Arbeitsschritt man gerade ist.