Top-Themen

Aktuelle Themen (A bis Z)

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, 1474 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 ..
Ähnliche Inhalte
VB for Applications
Excel VBA Code
gelöst Frage von specialuserVB for Applications2 Kommentare

Hallo zusammen, Hab hier einen Button in einer Excel mit Makros erstellt. Der Button hat die Funktion aus der ...

Microsoft Office
VBA Code zum Kopieren von einzelnen Zellen in Excel
Frage von SebastianLMicrosoft Office3 Kommentare

Hallo, ich möchte in einer Excel Tabelle per Button den Inhalt von einer Zelle in eine andere Zelle im ...

VB for Applications
Excel - VBA: Automatisches Setzen von Kommentaren in eine Zelle
gelöst Frage von d4shoerncheNVB for Applications3 Kommentare

Moin, eventuell könnt ihr mir helfen. Es geht um ein kleines Problem in Excel bzw. Excel / VBA. Ich ...

VB for Applications
Excel Link in Word mittels VBA ändern
gelöst Frage von BadgerVB for Applications10 Kommentare

Hallo Leute, ich habe eine Word-Datei, welches Text aus einer Excel-Tabelle enthält. Dieser Text ist mittels "LINK Excel.Sheet.12" eingebunden. ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 13 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 15 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.