Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel VBA Link hinzufügen funktioniert nur, wenn ich im Code einen Haltepunkt setze

Frage Entwicklung VB for Applications

Mitglied: YotYot

YotYot (Level 1) - Jetzt verbinden

11.12.2014, aktualisiert 15.12.2014, 1334 Aufrufe, 4 Kommentare

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= ..." & 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.
Mitglied: colinardo
LÖSUNG 12.12.2014, aktualisiert 15.12.2014
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
01.
strIncidentId = "123456" 
02.
With ActiveSheet 
03.
    For Each cell In .Range("A1:A10") 
04.
        .Hyperlinks.Add anchor:=cell, Address:="https://host.domain.tld/Verzeichnis/main.aspx?etn=incident&pagetype= ..." & strIncidentId & "%7D" 
05.
    Next 
06.
End With
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
Bitte warten ..
Mitglied: YotYot
12.12.2014 um 12:06 Uhr
Du schon wieder

Moin! Und Aloha!

Das ist die Fortführung von dem Script, bei dem Du mir gestern/vorgestern schon geholfen hast, "firstAddress" beinhaltet genau eine Zelle.

Deinen Vorschlag mit dem With habe ich jetzt mal getestet, wobei ".Range("A1:A10")" in meinem Fall explizit wieder firstAddress ist, da jede Zelle einen individuellen Link bekommt. Hintergrund: In firstAddress steht eine Ticketnummer, für die ich eine strIncidentId = Datensatz-ID auslese, die ich für den Link brauche, um das Ticket direkt aufrufen zu können. Ein bisschen Komfort für die Kollegen
Auch den Haken für die automatische Aktualisierung habe ich herausgenommen.

Ergebnis: Leider das gleiche wie vorher: Hält das Script per Haltepunkt (Stop) einmal an, kann es anschließend komplett durchlaufen und alles ist gut. Auf welche Weise ich es starte, ist dabei egal. Läuft es ohne Stop durch, auch hier egal, wie ich es starte, ist zwar die Formatierung für die Links da, die Links selbst fehlen aber.

Kann man irgendwie so einen Stop programmatisch mit einbauen, der sich nach einer Sekunde oder so selbst auflöst, das Script durchlaufen lässt und sich für die nächste Aktualisierung selbst wieder setzt? Würde mir ja auch reichen.

Jetzt ist erstmal essen angesagt

Grüße aus dem Regen

Y.
Bitte warten ..
Mitglied: colinardo
12.12.2014, aktualisiert um 16:12 Uhr
Yip, it's me ;--)
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 so
wsLinks.Hyperlinks.Add anchor:=f.Offset(0,8), Address:="https://host.domain.tld/Verzeichnis/main.aspx?etn=incident&pagetype= ..." & strIncidentId & "%7D" 
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
Bitte warten ..
Mitglied: YotYot
15.12.2014 um 11:17 Uhr
Soooo, dann wollen wir mal:

Zunächst: es läuft! Allerdings anders, als gedacht.

Ob ich dem anchor nun firstAddress oder f.Offset mitgebe, ist dem relativ schnuppe, da passiert das gleiche. Ich habe bisher immer eine bereits vorhandene Spalte zusätzlich mit Links befüllt und das wurde dann immer wieder am Ende des Scripts überschrieben (habe ich mit einer kurzen Wartezeit pro Durchlauf dann festgestellt). Ganz zum Schluss wurden anscheinend nochmal die verbundenen Daten aktuvalisiert. Jetzt lasse ich die Links in eine andere Spalte schreiben, die auch nicht direkt an den automatisch ausgelesenen Bereich angrenzen darf. Damit die Ticketnummern nicht doppelt auftauchen, blende ich die Original-Spalte am Ende des Scripts aus.

Zum Vorstellen also nochmal:

Die Spalten A bis N werden per externer Datenverknüpfung befüllt, die Spalte H ist die mit den Ticketnummern, für die ich die Links erzeugen will. Nun lasse ich die Spalte O frei und füge die Links in P ein, lege den Text aus H als TextToDisplay darüber und alle sind glücklich
Würde ich die Links in O einfügen lassen, werden sie anschließend übrigens ebenfalls gelöscht.

Danke für's Mitleiden

Jörg
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
Excel VBA Sortierung von Daten (4)

Frage von easy4breezy zum Thema VB for Applications ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...