Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1540to1544
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

Ereignis "Hyperlink angeklickt" erkennen/reagieren

Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 13:53:13
Helmut
Hallo,
ich habe hier eine Excel-Tabelle mit einem Hyperlink, der auf eine Internet-Adresse zeigt. Also beim Klick auf diesen Link soll die Internet-Adresse aufgerufen werden.
In Abhängigkeit von einem Parameter (Checkbox) soll nun vor dem Aufruf des Links ein Text an die URL angehängt werden.
Das Anhängen des zusätzlichen Textes soll in VBA erfolgen.
Frage:
Wie bekomme ich in VBA mit(durch welches Ereignis), dass der Anwender auf den Link geklickt hat?
Damit ich in Abhängigkeit von dem Parameter den zusätzlichen Text anhängen kann und dann erst den Link per VBA aufrufen kann.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 14:05:55
Mullit
Hallo,
mit einem kleinen Hack: Du lässt den Hyperlink mit der Adresse auf sich selbst verweisen und nutzt das Worksheet_FollowHyperlink-Ereignis, in welchem Du mit der FollowHyperlink-Methode auf Deine eigentliche Adresse verweist.
Gruß, Mullit
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 14:15:30
Mullit
Hallo,
ah da fällt mir grad noch ein, Du könntest natürlich auch über ein CheckBox-Event einfach die Hyperlink-Adresse über ihre Eigenschaft umschreiben, wäre wohl noch einfacher...
Gruß, Mullit
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 14:25:41
Helmut
Ich glaube mit dem CheckBox-Event geht das nicht, ich habe nämlich nicht nur einen Hyperlink in der Tabelle sondern Hunderte.
Ich versuche es mal mit Pseudocode zu beschreiben:
Begin
Wenn irgendein Hyperlink angeklickt Dann
Wenn Checkbox is checked Dann
begin
"Anzuzeigenden Text" an den Hyperlink hinten dran hängen;
Hyperlink aufrufen;
end
else Original-Hyperlink ohne zusätzlichen Text aufrufen;
End
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 14:46:00
Helmut
Das Ereignis FollowHyperlink habe ich gefunden. Dort habe ich zum Test einfach mal eingebaut:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Debug.Print Target.Address
Debug.Print Target.Name
Target.Follow NewWindow:=True, AddHistory:=True
End Sub
Da hätte ich nun schon mal alle Infos, die ich brauche. Den Target.Namen werde ich nun an den Target.Adress hängen wenn die Checkbox aktiv ist und diesen neu zusammengebauten Link dann aufrufen.
Allerdings wird der Link bereits vor dem FollowHyperlink aufgerufen und mit dem Target.Follow ruft er sich dann rekursiv immer wieder selbst auf?
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 14:57:57
Mullit
Hallo,
immer langsam, doch das geht auch einfach mit einem CheckBox-Event:
Option Explicit

Private Sub CheckBox1_Click()
Dim objHyperlink As Hyperlink
Dim strPath As String
strPath = "http://www.herber.de/forum/archiv/1540to1544/t1543505.htm"
For Each objHyperlink In ActiveSheet.Hyperlinks
   objHyperlink.Address = IIf(CheckBox1.Value, strPath & "#1543505", strPath)
Next
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 15:14:08
Mullit
Hallo nochmal,
...und so noch etwas besser...
Option Explicit

Private Sub CheckBox1_Click()
Dim objHyperlink As Hyperlink
Dim strPath As String, strAddress As String
strPath = "http://www.herber.de/forum/archiv/1540to1544/t1543505.htm"
strAddress = IIf(CheckBox1.Value, strPath & "#1543505", strPath)
For Each objHyperlink In ActiveSheet.Hyperlinks
   objHyperlink.Address = strAddress
Next
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 14

Gruß, Mullit
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 15:37:11
Helmut
Ja, die Idee hatte ich auch schon.
Im Prinzip gibt es zwei Lösungsansätze
1. Immer nur den jeweils angeklickten Link bei Bedarf vor dem Aufruf aufbereiten (FollowHyperLink)
2. Wenn er die Checkbox checkt bzw. uncheckt alle im Sheet vorhandenen Links aufbereiten, so dass sie bei folgenden Klicks bereits korrekt aufbereitet zur Verfügung stehen.
Die Lösung 2 hat aber m. E. folgenden Nachteil:
Alle Links die neu angelegt wurden, seitdem die Checkbox das letzte mal aktiviert wurde, haben ggfs. den falschen "Zustand".
Ok man könnte bei jeder Link-Neuanlage die Methode aufrufen, die alle Links auf den korrekten Zustand bringt.
Aber ich fände die Lösung 1 eleganter. Allerdings bin ich jetzt schon drei mal in das Rekursionsproblem reingetappt :-(
Wie kann man bei Lösung 1 verhindern, das er den Link aufruft, bevor er in die Worksheet_FollowHyperlink - Routine springt?
Wenn das nicht geht, werde ich wohl die Lösung 2 versuchen.
Besten Dank
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 16:03:50
Helmut
Ich denke das Rekursions-Problem habe ich nun in den Griff bekommen (Abbruch-Bedingung eingebaut).
Aber dummerweise ruft er den Link noch zweimal auf:
Den "falschen/unaufbereiteten Original"-Link im Sheet und dann noch den korrekt "aufbereiteten" Link in der Worksheet_FollowHyperlink - Methode?
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 16:31:30
Mullit
Hallo,
ah Du schießt etwas schnell, zunächst mal hierzu:
Wie kann man bei Lösung 1 verhindern, das er den Link aufruft,
bevor er in die Worksheet_FollowHyperlink - Routine springt?

Gar nicht, deswegen würdest Du die Subaddress des Hyperlinks bei dem Hack auf die Ursprungszelle verweisen lassen und die gesamte Hyperlinkabhandlung im Event machen.
Du müsstest die Adressen dann gesondert einlesen, das machts auch nicht wirklich besser, deswegen bleiben wir zunächst mal bei Ansatz 2:
Mach mal n Beispiel wie Deine Hyperlinks und die Textanhänge aussehen, am besten mit ner Bsp.-mappe...
Gruß, Mullit
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 17:14:55
Mullit
Hallo nochmal,
..hmm obwohl man natürlich auf die Addressen bspw. über die Zellwerte zugreifen könnte, sofern sie dort enthalten sind, dann würde auch der 1. Ansatz gehen, aber mach am besten mal n Beispiel...
Gruß, Mullit
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 18:21:09
Helmut
Hier das Beispiel:
https://www.herber.de/bbs/user/111709.xlsm
Funktioniert soweit super.
Allerdings ruft er halt die Seite 2 x auf :-(
Andererseits brauche ich aber die Infos aus dem Originallink (Address, Name) um den neuen Link zusammenzubauen.
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
23.02.2017 22:42:58
Helmut
Ich hatte das Kontrollkästchen vergessen.
Vielleicht hat ja noch jemand eine Idee, wie man den ersten Default-Aufruf bei Variante 1 vermeiden kann?
Dann gäbe es theoretisch noch eine dritte Möglichkeit:
Den Link nicht als "Link" deklarieren, sondern zwei Spalten definieren:
Spalte 1 enthält die URL als reinen Text und in
Spalte 2 steht der Text der bei gecheckter Checkbox an die URL angehängt werden soll.
Wenn er auf den (Text-)Link klickt wird in VBA der eigentliche Link generiert und dann aufgerufen.
Aber vermutlich ist die Variante 2 noch besser als diese etwas umständliche Lösung.
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
24.02.2017 09:36:30
Mullit
Hallo,
mit Deinem Bsp. kann man irgendwie wenig anfangen, Du sprachst von mehreren hundert Links, dabei ist auch entscheidend wie sie aufgebaut sind und ob die Textanhänge sich ändern.
Das Herber-Bsp. nützt da wenig, das mußt zeigen wie vom Prinzip her Deine Originaldaten aufgebaut sind.
Zur ersten Variante gibt's keine andere Möglichkeit, zumal sich offenbar die Urls bei dir nicht als Volltext in der Zelle befinden
Aber mal als Ansatz für Dich: Wenn wie im Bsp. bei Deinen Originaldaten die Textanhang-Links sich dadurch von den normalen Links unterscheiden, daß sie keinen Slash am Ende haben, müsstest Du darauf beim Einlesen abfragen und dann ggf. den Anhang setzen...
Mit einer zusätzlichen Spalte geht's natürlich auch, damit solltest Du auch schon die 1.Variante selbst gebacken kriegen...
Gruß, Mullit
Anzeige
AW: Ereignis "Hyperlink angeklickt" erkennen/reagieren
24.02.2017 13:41:37
Helmut
Ich habe mal die Lösung 2 quick and dirty umgesetzt: Alle Links im Sheet updaten, sobald er die Checkbox ("Alle Links aufbereiten") checkt/uncheckt, so dass sie gleich "wie aktuell gewünscht" vorliegen.
https://www.herber.de/bbs/user/111727.xlsm
Die Anzahl bzw. der Aufbau der Links hat m. E. mit der Funktionalität nichts zu tun. Es soll einfach für alle Links der "Anzuzeigende Text" an die "Adresse" angehängt werden bzw. entfernt werden (s. Hyperlink bearbeiten).
Aus meiner Sicht Ziel somit soweit erreicht - Super - Besten Dank für die Hilfe.
Anzeige
Na dann doch erledigt! owT
24.02.2017 15:47:01
Luc:-?
:-?
AW: Na dann doch erledigt! owT
24.02.2017 16:01:52
Helmut
Ja insofern erledigt, da der UseCase mit der "Lösung 2" erfolgreich abgebildet werden kann.
Vielleicht hat ja noch jemand einen schlaue Idee und bekommt es auch mit der "Lösungsidee 1" hin. Wäre aber Nice to have.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige