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

Blätter mit generierten Hyperlinks einblenden

Blätter mit generierten Hyperlinks einblenden
15.11.2018 18:20:46
Chris
Hallo zusammen,
auf der Suche nach einem VBA-Code, welcher mir beim Klick auf einen Hyperlink ein Tabellenblatt einblendet, bin ich bereits hier im Forum fündig geworden. Folgenden Code habe ich:
Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim strAdr As String
Dim strSht As String
strAdr = Target.SubAddress
strSht = Replace(Left(strAdr, Len(strAdr) - InStr(1, StrReverse(strAdr), "!")), "'", "")
Sheets(strSht).Visible = xlSheetVisible
Sheets(strSht).Activate
End Sub

Dieser Code funktioniert mit normalen Hyperlinks sehr gut. Mein Problem ist jedoch, dass meine Hyperlinks durch die Funktion =Hyperlink() generiert werden.
Gibt es die Möglichkeit, dass der Code den generierten Hyperlink in der Zelle in einen Text umwandelt und ihn sich dann als Adresse (strSht) einträgt? Diese Lösung ist aber natürlich nur meine unbedarfte Lösung. Falls jemand einen besseren Einfall hat, nehm ich den natürlich auch! ;-)
Danke für Eure Hilfe!
Gruß
Chris

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blätter mit generierten Hyperlinks einblenden
18.11.2018 12:55:32
Herbert
Hallo Chris,
ich habe da etwas gefunden, was "Case" mal für Jemanden geschrieben hat. Der Code sucht in der vorgegebenen Spalte (3), ab der angegebenen Zeile (7), alle Formeln mit einer Internetadresse und schreibt dann in die rechts daneben liegende Spalte diese IAdr als Text. Probier's mal
Sub Main()
Dim lngTMP As Long
'* hier ist die Startzeile 7 und die Spalte 3 angegeben. Diese musst du noch anpassen.
For lngTMP = 7 To Cells(Rows.Count, 3).End(xlUp).Row Step 2
Cells(lngTMP, 4).Value = Split(Split(Cells(lngTMP, 3).Formula, "(""")(1), """ &")(0) &  _
Format(Split(Cells(lngTMP, 3).Value, " ")(1), "00000")
Next lngTMP
End Sub
Servus
Anzeige
AW: Blätter mit generierten Hyperlinks einblenden
18.11.2018 13:23:42
Herbert
Hallo Chris,
probier auch mal diese Variante:
Sub Main()
Dim lngTMP As Long, sTxt$
'* hier ist die Startzeile 7 und die Spalte 3 angegeben. Diese musst du noch anpassen.
For lngTMP = 7 To Cells(Rows.Count, 3).End(xlUp).Row Step 2
Cells(lngTMP, 4).Value = Split(Split(Cells(lngTMP, 3).Formula, "(""")(1), """")(0)
Next lngTMP
End Sub
Servus
AW: Blätter mit generierten Hyperlinks einblenden
19.11.2018 11:03:29
Chris
Hallo Herbert,
vielen Dank für Deine Antwort und Hilfe.
Leider funktionieren die Codes so nicht. Der erste gibt die Formel wieder und der zweite bricht nach dem
'# für die Verlinkung ab. Das ist auch was ich vorher befürchtet hatte. Wahrscheinlich kann man sich den sichtbaren Text des Links nicht als Text und neuen Link eintragen lassen.
Falls Du denoch eine weitere Idee hast, probiere ich die aber natürlich sehr gerne aus!
Danke und Gruß
Christopher
Anzeige
Welche Variante hast du getestet? owt
19.11.2018 11:05:41
Herbert
,,,
AW: Welche Variante hast du getestet? owt
19.11.2018 12:07:44
Chris
Ich habe beide Varianten getestet. Allerdings habe ich zwischenzeitlich eine weitere Lösung gefunden.
Sub WriteHyperlink()
Dim i As Integer
For i = 5 To 2501
Cells(i, 4).Select
Worksheets("Prozess").Hyperlinks.Add Anchor:=Selection, Address:="#'" & Cells(i, 3) & "'!A1"
End Sub
Dieser Code macht im Prinzip was ich möchte. Allerdings ist er noch sehr unelegant. Ich habe versucht, ihn in eine if Schleife einzubauen, damit das Makro nur läuft, wenn in Spalte C auch etwas steht. Allerdings wird mir dann immer gesagt, dass das Objekt die Funktion nicht unterstützt. Außerdem versuche ich gerade noch einen Weg zu finden, dass der angegebene Pfad zwar so wie oben als Hyperlink hinterlegt ist, aber als Text nur das Tabellenblatt ohne "#", "!" und Zelle angezeigt wird.
Gruß
Chris
Anzeige
AW: Welche Variante hast du getestet? owt
19.11.2018 12:33:42
Herbert
Hallo Chris,
so wird es schwierig! Lade doch mal eine Beispieldatei hoch, die zwar keine Originaldaten beinhalten muss, aber deren Aufbau exakt mit dem Original übereinstimmen MUSS!
Servus
AW: Welche Variante hast du getestet? owt
19.11.2018 14:16:27
Chris
Anbei mal eine stark abgespeckte Version meiner Mappe. Ich denke, dass Alles enthalten ist, um das Problem deutlich zu machen. Im Blatt "Prozess" generiert sich ein Hyperlink in Spalte C. Dieser Hyperlink ändert sich entsprechend automatisch, sowie der Nutzer einen Prozess abschließt und zum nächsten kommt (passiert in der Formelhilfe aber ich musste die Formel löschen wegen zu vielen Informationen). Wenn also alle Unterschritte im Prozess 1 erledigt wurden, steht in Spalte C automatisch der Hyperlink zu Schritt 2 usw. .
Um die gesamte Mappe übersichtlicher zu gestalten, habe ich ein Makro integriert, welches immer nur die Blätter "Prozess" und den per Hyperlink ausgewählten Schritt öffnet.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim Ziel As String
Dim Adr  As String
Ziel = Target.SubAddress
Adr = Left(Ziel, InStr(Ziel, "!") - 1)
With Sheets(Adr)
.Visible = True
.Activate
End With
End Sub
Das Problem ist, dass dieser Code nur mit tatsächlichen Hyperlinks arbeiten kann, nicht aber mit Hyperlinks welche mit der Funktion =Hyperlink() kreiert wurden. Auf diese Funktion kann ich aber wiederum nicht verzichtn, da der Hyperlink ja flexibel sein muss, je nachdem in Welchem Schritt man gerade ist.
Meine Idee war deshalb, in Spalte D durch ein Makro (welches permanent läuft) einen "sauberen" Hyperlink einzufügen, mit welchem man dann navigiert.
https://www.herber.de/bbs/user/125485.xlsb
Anzeige
AW: Welche Variante hast du getestet? owt
19.11.2018 18:07:11
Herbert
Hallo Chris,
es tut mir sehr Leid, aber ich checke nicht, was du willst. Das Makro "Zeile_markieren" macht nichts ersichtbares und weiter finde ich nichts. Vielleicht kannst du es mir noch einmal detailliert beschreiben, was wann und wie passieren soll.
Servus
AW: Welche Variante hast du getestet? owt
20.11.2018 10:16:47
Chris
Hi Herbert,
klar, ich versuche es gerne nochmal genauer zu erklären. Das Makro "Zeile_markieren" kannst Du ignorieren. Das hatte ich mal auf Faulheit erstellt, weil ich anfangs vergessen hatte, die Formeln in der Mappe mit relativen Zellenbezügen zu machen. Dieses Makro löscht eine aktive Zeile in allen Tabellenblättern. Ich hatte VBA komplett leergeräumt um keine Aufschlüsse auf die ursprüngliche Datei zu ermöglichen. Datenschutz und so ;-)
Um nun auf das zurückzukommen, woran ich scheitere. In Spalte C steht ja die Formel =Hyperlink(). Diese erstellt einen flexibelen Hyperlink, welcher für jede Zeile (jeden Dienstleister) in Spalte A anzeigt, in welchem Schritt des Prozesses der Bearbeiter gerade etwas machen soll. Es gibt in der Originalmappe 7 Arbeitsschritte und der Bearbeiter kann so immer gleich in den aktuellen Arbeitsschritt springen und dort weiterarbeiten.
Da ich so jedoch immer sehr viele Arbeitsblätter offen habe, wollte ich erreichen, dass ich alle Schritte ausblende und diese erst eingeblendet werden, wenn ich Bearbeiter bei Dienstleister XY in Spalte C auf den jeweiligen Schritt klickt. Das Problem ist nur, dass ich kein Makro finde, welches in Spalte C den Hyperlink auslesen kann, da dieser ja mit der Formel =Hyperlink() generiert wurde.
So kam mir die Idee, in einer Hilfsspalte (Spalte D) einen tatsächlichen Hyperlink per Makro zu schreiben (auf Basis des mit =Hyperlink() generierten Link in Spalte C), welches das oben gepostete Makro verwenden kann, um ein ausgeblendetes Tabellenblatt zu öffnen. Ein Makro, welches das eingeblendete Tabellenblatt beim Verlassen wieder ausblendet, habe ich schon.
Ich hoffe, dass die Erklärung es etwas deutlicher macht. Leider kann ich nicht die Originaldatei hochladen.
Anzeige
AW: Welche Variante hast du getestet? owt
20.11.2018 12:27:51
Herbert
Hallo Chris,
muss dein Hyperlink unbedingt in dieser Version:
=HYPERLINK("#'"&Formelhilfen!$A5&"'!A5";Formelhilfen!$A5)) geschrieben werden, oder ginge auch diese Version:
=HYPERLINK("Formelhilfen!$A5";Formelhilfen!$A5)
Mit der 2. Version sähe das Ganze aus wie folgt:
Userbild
Servus
AW: Welche Variante hast du getestet? owt
20.11.2018 13:55:05
Chris
Hi Herbert,
ja, das ginge auch, löst aber das Problem nicht.
In Spalte D soll ja gerade wieder "Schritt 1" stehen. Ich kann aber durchaus verstehen, dass der Sachverhalt etwas komplizierter ist.
Das Makro, welches am Ende den Schritt (hier Schritt 1) wieder einblendet, welchen ich ausgeblendet hatte sieht wie folgt aus:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim strAdr As String
Dim strSht As String
strAdr = Target.SubAddress
strSht = Replace(Left(strAdr, Len(strAdr) - InStr(1, StrReverse(strAdr), "!")), "'", "")
Sheets(strSht).Visible = xlSheetVisible
Sheets(strSht).Activate
End Sub
Dieses Makro kann aber nur mit einem Hyperlink arbeiten, nicht aber mit einem Hyperlink, welcher mit =Hyperlink() in eine Zelle geschrieben wurde. Egal ob ich nun in Spalte D die ursprüngliche Formel oder aber Deinen Vorschlag nehme, das Makro kann damit arbeiten. Das Problem ist nur, dass der Nutzer ja auf den Hyperlink in Spalte D klicken müsste um das Makro zum einblenden auszulösen. Das habe ich also in diesem Fall mit Hilfzeile evtl. etwas falsch bezeichnet. So ist es nun halt unschön, dass in Spalte D "Schritt 1!A1" steht, statt nur Schritt 1. Es soll so sein, dass der Nutzer schön auf Schritt 1 (oder was auch immer gerade angezeigt wird) klicken kann aber das Makro trotzdem auslöst.
Es tut mir wirklich leid, dass ich es nicht besser beschreiben kann. Ich weiß, dass es sich etwas verwirrend liest. Deshalb an dieser Stelle nochmal einen riesen Dank, dass Du dich damit beschäftigst!
Anzeige
AW: Welche Variante hast du getestet? owt
20.11.2018 16:14:25
Chris
Ich habe nochmal überlegt, wie ich eine einfacherere Frage stellen kann.
Hier kommts ;-):
Kann man nachfolgendes Makro
Sub WriteHyperlink()
Dim i As Integer
For i = 5 To 2501
Cells(i, 4).Select
Worksheets("Prozess").Hyperlinks.Add Anchor:=Selection, Address:="#'" & Cells(i, 3) & "'!A1" _
End Sub
So umbauen, dass die folgenden Attribute gelten?
- In die zu schreibende Zelle wird zwar der Hyperlink wie angegeben erstellt, als Text steht jedoch der Hyperlink ohne "#", Zellbezug und "!". Am Beispiel gesehen steht also in Spalte D wieder Schritt 1, jedoch als editierbarer Hyperlink.
- Das Makro ist dauerhaft aktiv. Heißt, der Trigger ist nicht das Auslösen per Knopfdruck sondern sowie ein Eintrag in Spalte C, Zeile X steht wird in Spalte D, Zeile X der entsprechende, editierbare Hyperlink kreiert.
- Die "Schleife" geht bis Zeile 2501 und generiert, wie gesagt, nur einen Eintrag, wenn in Spalte C der entsprechenden Zeile ein Eintrag steht.
Wenn der Code so verändert wird, dass diese drei Attribute zutreffen, wären alle meine Probleme gelöst.
Anzeige
AW: Welche Variante hast du getestet? owt
20.11.2018 17:15:18
Herbert
Hallo Chris,
probier's 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)
Cells(lngTMP, 4).Value = Sheets(sWks).Range(sRng)
Next lngTMP
ende:
Application.EnableEvents = True
End Sub
Servus
AW: Welche Variante hast du getestet? owt
22.11.2018 10:15:49
Chris
Hallo Herbert,
danke für den Code. Leider ist es das noch nicht.
Der Code schreibt etwas in Spalte D was aussieht wie ein Link, aber keiner ist.
Außerdem läuft das Makro auch nur durch, wenn ich es auslöse und nicht, wenn ich einen neuen Eintrag in eine Zeile schreibe.
Gruß
Christopher
Anzeige
AW: Welche Variante hast du getestet? owt
22.11.2018 10:30:19
Herbert
Hallo Christopher,
ich dachte, du wolltest den Hyperlink aus Spalte C als Textstring in Spalte D haben. Jetzt schreibst du, dass du ihn als Link dort haben willst? Also mache ich es mal als Link!
Wenn du das Makro nach "einem neuen Eintrag in eine Zeile" haben willst, dann musst du eben ein "SelectionChange"-Ereignis daraus machen. Ich hoffe, du weißt wie das geht?
Servus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige