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

Parent-Objekt eines Hyperlinks

Parent-Objekt eines Hyperlinks
11.06.2021 23:41:18
Andreas
In einer Zelle wird ein Hyperlink (auf die eigene Zelle oder auf "A1") definiert.
Beim Anklicken wird der Eventhandler
Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
aufgerufen.
Um auf die Quelle des Hyperlinks zuzugreifen, versuche ich die Parent-Methode zu nutzen.

Dim d As Object
Set d = Target.Parent

Woher weiss ich, welche Methoden und Eigenschaften dieses Objekt hat? Klar, ist generisch, aber kann ich es deshalb tatsächlich eher vermuten statt wissen? In der MS-Doku finde ich keinen Hinweis.
Ich würde jetzt sagen, es ist ein Range-Objekt, oder das Worksheet selber. Aber sowohl
d.Name
als auch
d.Value
erzeugen Laufzeitfehler.
Wo liegt der Fehler? Was mache ich falsch?

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Parent-Objekt eines Hyperlinks
12.06.2021 07:44:47
Nepumuk
Hallo Andreas,
kann ich nicht nachvollziehen. Das funktioniert bei mir einwandfrei:
Code:

[Cc]

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim objCell As Range Set objCell = Target.Parent Debug.Print objCell.Value Set objCell = Nothing End Sub

Gruß
Nepumuk
Anzeige
AW: Parent-Objekt eines Hyperlinks
12.06.2021 07:55:35
Oberschlumpf
oder versuch mal so:

Dim d As Object
Set d = Target.Parent
MsgBox d.Parent.Name
wenn der Link auf eine Zelle verweist, was nach deiner Beschreibung ja immer der Fall ist, dann ist das übergeordnete Objekt (parent) = die Tabelle, in der sich die verlinkte Zelle befindet.
allein nur

d.Name
gibt bei mir auch n Fehler.
das sehe ich aber auch in der Überwachung von Target. allerdings gibt es ein weiteres Parent - und wenn ich das aufklappe, wird mir für NAME = "Tabelle1" angezeigt = Name der Tabelle, in der sich die verlinkte Zelle befindet.
somit müsste mit

d.Parent.Name
dein gewünschtes Ergebnis angezeigt werden, wenn ich deine Beschreibungen richtig interpretiert hatte...oder?
Anzeige
AW: Parent-Objekt eines Hyperlinks
12.06.2021 09:01:15
Andreas
Ja, das funktioniert bei mir auch. Interessant.
Aber mein Ziel ist es eigentlich, an den Inhalt der Tabellenzelle zu kommen, in der der Link drinsteht.(nicht die Zelle, wo der Link hinweist!)
Da wäre ich mit .Parent.Parent schon zu weit.
Komisch, dass .Parent nicht geht. Irgendein Objekt muss das ja sein.
Aber es muss doch auch eigentlich irgendwo eine Doku von MS geben, was z.B. das Parent-Objekt ist wenn ein Hyperlink in einer Tabellenzelle steht.
Oder kann man das anders lösen, auf den Inhalt der Tabellenzelle (= der Name des Hyperlinks) zu kommen?
AW: Parent-Objekt eines Hyperlinks
12.06.2021 09:17:21
Oberschlumpf
zeig ne Bsp-Datei mit link in ner zelle
daneben - per Hand! - DEN TEXT, den du suchst
"nur" inhalt aus zelle wäre =A1 (A1 is die Zelle mit dem Link)
ich versteh nich, was all das mit Parent zu tun hat - oder benutzt du n wort, was nich das ist, was du meinst - oder versteh ich zu wenig von Parent?
Anzeige
AW: Parent-Objekt eines Hyperlinks
12.06.2021 09:55:59
Andreas
Userbild
Der Link verweist auf eine andere Excel-Datei wo genau der Name des Links vorkommt.
Das löse ich mit FollowHyperlink(), weil ich die Nummer in der anderen Datei erst suchen muss und dort keine Lesezeichen setzen kann.
Dazu muss ich aber in FollowHyperlink() an den Namen des Links = Inhalt der Tabellenzelle rankommen, und zwar ohne(!) dass der Link auf die eigene Zelle verweist (zu viel Aufwand).
bin raus..kann nur noch kopf schütteln
12.06.2021 10:11:22
Oberschlumpf
und WIE soll ich mit dem Bild testen? - mit bsp-datei meinte ich eine bsp-EXCEL-datei
von WELCHEM link sprichst du? ich sehe keinen link!!!!
man man man...sorry, ich weiß, immer freundlich sein....is nur gerad schwierig
Anzeige
AW: bin raus..kann nur noch kopf schütteln
12.06.2021 10:56:36
Andreas
Ich habe nicht die Absicht, hier Exceltabellen die sensible Daten beinhalten online frei zur Verfügung zu stellen.
Das Problem ist ganz klar und eindeutig beschrieben. Was meinen Sie bitte noch für zusätzliche Infos zu brauchen?
Wenn Sie in Bild nicht sehen können wo der Link ist, dann haben Sie wohl noch nie einen Link gesehen. Da würde es auch nichts nützen die Datei an sich hochzuladen.
haha...owT
12.06.2021 10:57:53
Oberschlumpf
AW: Range eines Hyperlinks
12.06.2021 11:02:31
GerdL

MsgBox Target.Range.Value
Moin,
in Follow_Hyperlink, so durchs Auge in die Brust.
Gruß Gerd
AW: Range eines Hyperlinks
12.06.2021 14:08:07
Andreas
Funktioniert leider nicht.
Vielleicht stell ich die Frage nochmal einfacher, will mich nicht in das .Parent verbeissen :
Ich würde gerne beim Aufruf eines Links im Event-Handler FollowHyperlink() einen Zugriff auf die Zelle haben in dem der Link steht, um den dortigen Value auslesen zu können. Wenn das auch anders geht (ausser(!) den Link auf die Zelle zeigen zu lassen in der er steht) bin ich sehr interessiert.
Anzeige
AW: Range eines Hyperlinks
12.06.2021 14:34:00
Mullit
Hallo,
und warum genau geht das jetzt nicht, was Nepumuk Dir schrieb....?
Gruß, Mullit
AW: Range eines Hyperlinks
12.06.2021 14:49:05
Andreas
Weil es einen Laufzeitfehler erzeugt: "Typen unverträglich".
AW: Range eines Hyperlinks
12.06.2021 14:50:46
Andreas
Weil es einen Laufzeitfehler erzeugt: "Typen unverträglich".
AW: Range eines Hyperlinks
12.06.2021 14:57:46
Mullit
Hallo,
das kann eigentl nicht sein, wenn Der Link in einer Zelle steht, den Fehler gibt's nur, wenn Du das .Parent vergißt, oder eines zu viel anhängst....
Gruß, Mullit
AW: Range eines Hyperlinks
12.06.2021 14:46:50
Mullit
...ach ja hab ich gar nicht gesehen, Gerd müsste genauso gehen, ist ja schließlich ein Range-Objekt, was Du da am Wickel hast...ergo, Du machst da irgendwas falsch...;-)
Gruß, Mullit
Anzeige
AW: Range eines Hyperlinks
12.06.2021 14:55:57
Andreas
Ja, vermutlich ist der Zellbezug da schon verloren gegangen.
Wenn ich nämlich Taget.Parent.Activate mache, dann geht das, aber da markiert er dann im Sheet schon die ganze Spalte.
Irgendiwe ist das aber auch nicht so richig logisch. Warum ist der übergeoordnete Range ausgrechnet die Spalte wo die Zelle drinsteht? Und nicht die Zeile? Oder direkt das ganze Worksheet?
Habe das dumpfe Gefühl, dass ich die Zelle im Eventhandler nicht mehr referenzieren kann (ausser ich lasse den Link auf sich selbst verweisen). Obwohl die Zelle ja der eigentliche Sender ist.
AW: Range eines Hyperlinks
12.06.2021 15:15:46
Andreas
Gerd geht übrigens auch nicht, denn mit Parent.Parent hänge ich schon im Worksheet-Object....
Anzeige
AW: Range eines Hyperlinks
12.06.2021 15:28:41
Mullit
Hallo,
Gerd hat gar kein Parent am Start....;-)

MsgBox Target.Range.Value
aber nix für ungut, ohne Bsp.-Mappe schließe ich mich da Thorsten an....I'm out...:(
Gruß, Mullit
AW: Range eines Hyperlinks
12.06.2021 16:20:40
Andreas
Auch Gerds obiges Beipsiel funktioniert nicht im FollowHyperlink(). Kannst Du ja selber ausprobieren, da braucht man kein Besipiel von mir.
Erläutere, ...
12.06.2021 15:18:17
Luc:-?
…Andreas,
warum unbedingt erst auf den HL geklickt wdn muss, um die in der HL-Zelle gezeigte Zahl festzustellen. Das ginge nämlich sonst auch ganz einfach per hl-zelle.Value.
Übrigens, ich nehme zwar an, dass es sich bei dir um echte HLs handelt, aber mal zur Info: Bei unechten HLs, die von der Xl-Fkt HYPERLINK erzeugt wdn, wird keinerlei Ereignis ausgelöst außer SelectionChange.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Anzeige
AW: Erläutere, ...
12.06.2021 16:22:32
Andreas
Weil damit auf ein anderes Dokument verwiesen wird.
Gerds Vorschlag war prinzipiell richtig, ...
15.06.2021 01:14:28
Luc:-?
…Andreas,
nur dürfte die MsgBox ggf noch im Quell-Wb ausgelöst worden und im Ziel-Wb nicht (mehr) erschienen sein (bzw die Datei musste erst geöffnet wdn und deshalb wurde die MsgBox unterdrückt). Ich schlage deshalb vor, im Ziel-Wb einen definierten KonstantenNamen der Mappe (oder des Blattes; ein .Parent weniger!) anzulegen, der dann von der EreignisProzedur gefüllt wird (in den Pgmm deaktiviert) und ggf die ZielDatei zuvor zu öffnen; anderenfalls müsste wohl auf eine so gefüllte globale Variable im Quell-Wb nach Öffnen des Ziel-Wb zurückgegriffen wdn (Ereignis Workbook_Open). Alternativ kann der LinkWert der Quelle aber auch in die ZielZelle geschrieben wdn (aktiviert):

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'    Range(Target.SubAddress).Parent.Parent.Names("LQWert").Value = Target.Range.Value
Range(Target.SubAddress) = Target.Range.Value
End Sub
Echte Hyperlinks wie deine lösen idR 2 Ereignisse aus, zuerst SelectionChange (falls eine andere Zelle ausgewählt war) beim Anklicken, dann FollowHyperlink. Dagegen lösen unechte Hyperlinks (per xlFkt HYPERLINK) nur das 1.Ereignis (unter analogen Bedingungen) aus. Das müsste man in diesen Fällen so regeln (Alternative über benannte Konstante hier ebenfalls deaktiviert):

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const txFmlVgl$ = "=HYPERLINK("
Dim adLZiel
If Target.HasFormula Then
If Left(Target.Formula, 11) = txFmlVgl Then
adLZiel = Split(Split(Target.Formula, "(""")(1), """,")(0)
'            Range(adLZiel).Parent.Parent.Names("LQWert").Value = Target
Range(adLZiel) = Target
End If
End If
End Sub
Das setzt allerdings voraus, dass die Fml eine (komplette) PfadAngabe als Text enthält und keinen Ausdruck, der sie erzeugt. Anderenfalls müsste die adLZiel-Zeile split-mäßig entsprd angepasst wdn.
Wird der LQWert wie in den hier aktivierten Varianten direkt in die ZielZelle geschrieben wird ggf auch noch das Change-Ereignis ausgelöst. Letzteres ist aber nicht der Fall, wenn die HYPERLINK-Fkt direkt zum Senden eines Wertes an ein Ziel benutzt wird, was möglich ist, wenn man als HL-Ziel ein voll und entsprd parametriertes Pgm* angibt (InternLink mit #). Allerdings ist dann nur das Senden möglich, der Sprung zum Ziel wird nicht ausgeführt, auch wenn das Pgm ihn enthält. Das ist prinzipiell auch mit einem echten Hyperlink möglich, birgt aber Unwägbarkeiten° je nach auszuführendem Pgm.
* Die Angabe nur des PgmNamens auf diese Weise gilt als interner Link zum PgmStandort in der Datei oder einem aktiven AddIn. Wdn dazu leere Klammern angegeben, wird das Pgm ebenfalls aufgerufen, aber läuft in einen Fehler, falls es auch nicht-optionale Parameter (Argumente im Falle einer ebenfalls so aufrufbaren Fkt/UDF) verlangt.
° Ich habe beim Testen erlebt, dass Xl-Adressen in Fmln auf Z1S1-Form umgestellt wurden, was bei Fml-Hyperlinks nicht passieren kann, obwohl die Blätter selbst im A1-Standard blieben. Das führt dann natürlich zu FehlerWerten.

Morhn, Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige