Excel VBA Link hinzufügen funktioniert nur, wenn ich im Code einen Haltepunkt setze
Moin!
Ich habe in Excel 2010 eine Tabelle mit rund 1200 Zeilen (dynamisch), wo in einer Spalte automatisch Hyperlinks hinterlegt werden sollen.
Beim Entwickeln funktioniert das auch ganz gut unter folgenden Bedingungen:
Ich gehe den Code mit F8 / Einzelschritt durch (dauert mir nun wirklich zu lange) oder
ich setze einen Haltepunkt in der Zeile, wo der Link gesetzt wird, gehe einmal mit F8 weiter, lösche dann den Haltepunkt und lasse den Rest des Codes durchlaufen. (Unbrauchbar, weil die Tabelle von unkundigen und ungeduldigen Kollegen benutzt werden soll. Und ich habe keine Lust, das alle paar Tage zu machen, weil sich die Inhalte geändert haben.)
Auf diese Weise funktioniert alles bestens.
Wenn ich aber das Makro komplett automatisch ablaufen lasse, egal ob beim Start der Datei oder ob ich im Code auf Ausführen / F5 klicke oder ob ich die Makro-Schaltfläche verwende, in jedem Fall sind zwar dann alle in Frage kommenden Zellen formatiert, als wäre ein Hyperlink da (blau, unterstrichen, Schrift etwas anders, es steht der vorgesehene Text drin und ein paar Zeilen bekommen keinen Link, weil es dazu keine Zuordnung gibt), aber es sind keine Links hinterlegt.
Ich habe die Zeile für den Hyperlink auch schon in ein eigenes Sub ausgelagert mit dem selben Effekt.
Der Code dazu sieht so aus:
Worksheets("Tabelle1").Hyperlinks.Add anchor:=Range(firstAddress), Address:="https://host.domain.tld/Verzeichnis/main.aspx?etn=incident&pagetype=entityrecord&id=%7B" & strIncidentId & "%7D"
Wenn die Links überhaupt gesetzt werden, funktionieren sie korrekt.
Gerade, als ich schon aufhören wollte, ist mir noch was aufgefallen: es sieht genauso aus, als würde der Link einmal erstellt und anschließend die Daten aktualisiert, die aus einer Datenbank kommen, womit die Zellen wieder neu geschrieben werden und dann keinen Link mehr an Bord haben.
Hat da jemand eine Idee dazu?
Grüße
Y.
Ich habe in Excel 2010 eine Tabelle mit rund 1200 Zeilen (dynamisch), wo in einer Spalte automatisch Hyperlinks hinterlegt werden sollen.
Beim Entwickeln funktioniert das auch ganz gut unter folgenden Bedingungen:
Ich gehe den Code mit F8 / Einzelschritt durch (dauert mir nun wirklich zu lange) oder
ich setze einen Haltepunkt in der Zeile, wo der Link gesetzt wird, gehe einmal mit F8 weiter, lösche dann den Haltepunkt und lasse den Rest des Codes durchlaufen. (Unbrauchbar, weil die Tabelle von unkundigen und ungeduldigen Kollegen benutzt werden soll. Und ich habe keine Lust, das alle paar Tage zu machen, weil sich die Inhalte geändert haben.)
Auf diese Weise funktioniert alles bestens.
Wenn ich aber das Makro komplett automatisch ablaufen lasse, egal ob beim Start der Datei oder ob ich im Code auf Ausführen / F5 klicke oder ob ich die Makro-Schaltfläche verwende, in jedem Fall sind zwar dann alle in Frage kommenden Zellen formatiert, als wäre ein Hyperlink da (blau, unterstrichen, Schrift etwas anders, es steht der vorgesehene Text drin und ein paar Zeilen bekommen keinen Link, weil es dazu keine Zuordnung gibt), aber es sind keine Links hinterlegt.
Ich habe die Zeile für den Hyperlink auch schon in ein eigenes Sub ausgelagert mit dem selben Effekt.
Der Code dazu sieht so aus:
Worksheets("Tabelle1").Hyperlinks.Add anchor:=Range(firstAddress), Address:="https://host.domain.tld/Verzeichnis/main.aspx?etn=incident&pagetype=entityrecord&id=%7B" & strIncidentId & "%7D"
Wenn die Links überhaupt gesetzt werden, funktionieren sie korrekt.
Gerade, als ich schon aufhören wollte, ist mir noch was aufgefallen: es sieht genauso aus, als würde der Link einmal erstellt und anschließend die Daten aktualisiert, die aus einer Datenbank kommen, womit die Zellen wieder neu geschrieben werden und dann keinen Link mehr an Bord haben.
Hat da jemand eine Idee dazu?
Grüße
Y.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257419
Url: https://administrator.de/forum/excel-vba-link-hinzufuegen-funktioniert-nur-wenn-ich-im-code-einen-haltepunkt-setze-257419.html
Ausgedruckt am: 06.04.2025 um 16:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo Jörg,
ich hoffe mal nicht das sich in der Variablen firstAddress ein Range mit mehreren Zellen befindet.
Mach es besser mit einer ForEach-Schleife dann klappt das einwandfrei
simples Beispiel
Zusätzlich wäre es anzuraten in den Optionen von Excel unter Erweitert die Option Verknüpfungen mit anderen Dokumenten aktualisieren für diese Mappe zu deaktivieren.
Grüße Uwe
ich hoffe mal nicht das sich in der Variablen firstAddress ein Range mit mehreren Zellen befindet.
Mach es besser mit einer ForEach-Schleife dann klappt das einwandfrei
simples Beispiel
strIncidentId = "123456"
With ActiveSheet
For Each cell In .Range("A1:A10")
.Hyperlinks.Add anchor:=cell, Address:="https://host.domain.tld/Verzeichnis/main.aspx?etn=incident&pagetype= ..." & strIncidentId & "%7D"
Next
End With
Grüße Uwe
Yip, it's me ;--)
firstAddress ist nur dafür da um zu überprüfen ob der Suchvorgang bereits alle Fundstellen durchsucht hat. Also als Referenz für deinen Fall absolut ungeeignet.
Grüße Uwe
Deinen Vorschlag mit dem With habe ich jetzt mal getestet, wobei ".Range("A1:A10")" in meinem Fall explizit wieder firstAddress
Ahhhha jetzt kommen wir der Sache schon näher, wenn du meinen Code von deinem letzten Post benutzt, nehme nicht firstAddress sondern die Variable f die den Range der gefundenen Zelle beinhaltet, bzw. einen Offset dieser Zelle !!! Also dann etwa sowsLinks.Hyperlinks.Add anchor:=f.Offset(0,8), Address:="https://host.domain.tld/Verzeichnis/main.aspx?etn=incident&pagetype= ..." & strIncidentId & "%7D"
Grüße Uwe