Thema Datum  Von Nutzer Rating
Antwort
04.03.2021 09:54:38 VBANeuling123
NotSolved
Blau Hyperlinks mit gleicher Addresse ändern
06.03.2021 18:26:19 xlKing
NotSolved
08.03.2021 13:53:29 Gast93786
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
06.03.2021 18:26:19
Views:
621
Rating: Antwort:
  Ja
Thema:
Hyperlinks mit gleicher Addresse ändern

Hallo,

Für einen Neuling ist dein Code garnicht mal so schlecht. Er hat nur noch einige Tücken, die man als Anfänger nicht gleich auf den ersten Blick sieht:

For Each hyp In ActiveSheet - An dieser Stelle kommt dein Laufzeitfehler 438, weil ActiveSheet keine Auflistung sondern ein Einzelobjekt ist. Hier wird jedoch ein Collection-Objekt erwartet. Also eine Liste gleichartiger Objekte die über die Eigenschaft ihres Mutterobjekts zurückgegeben werden. Auflistungsobjekte erkennst du meistens daran, dass sie mit dem Buchstaben s enden. In deinem Fall also: For Each hyp In ActiveSheet.Hyperlinks

Zweitens prüfst du innerhalb deiner Schleife immer auf den ersten Hyperlink. If Hyperlinks(1).Address = Linkalt Then. Du willst aber alle Hyperlinks aktualisieren. also musst du Hyperlinks(1) durch hyp ersetzen: If hyp.Address = Linkalt Then

Drittens solltest du auch die Möglichkeit in Betracht ziehen, dass auch an anderer Stelle eine Eingabe erfolgen kann, die nichts mit Hyperlinks zu tun hat. In diesem Fall würdest du mit deinem Code einen Laufzeitfehler 9 erhalten. Da die entsprechende Zelle keinen Hyperlink besitzt. Hier musst du also noch eine If Abfrage einbauen, ob die geänderte Zelle überhaupt einen Hyperlink hat.

Fertig könnte der Code in etwa so aussehen. Hab jetzt nicht allzuviel geändert, damit du noch durchsiehst. Der Code gehört natürlich in das Tabellenmodul wo du die Hyperlinks hast. z.b. Tabelle1

Option Explicit
Public Linkalt As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If ActiveCell.Hyperlinks.Count = 1 Then
    Linkalt = Hyperlinks(1).Address
  End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Linkneu As String
Dim hyp As Hyperlink
If Target.Hyperlinks.Count > 0 Then
  Linkneu = Target.Hyperlinks(1).Address
  For Each hyp In ActiveSheet.Hyperlinks
    If hyp.Address = Linkalt Then
      hyp.TextToDisplay = Target.Hyperlinks(1).TextToDisplay
      hyp.Address = Replace(hyp.Address, Linkalt, Linkneu)
    End If
  Next
  Linkalt = Linkneu
End If
End Sub

Einziger Nachteil: Damit der Code funktioniert muss zwingend auch der Anzeigetext geändert werden. Wird nur der Hyperlink an sich geändert, springt der Code leider nicht an. Hierzu fällt mir aber im Moment leider auch nichts besseres ein, da es leider kein Ereignis für Hyperlink_Change gibt. Insofern hoffe ich, dass dir das so ausreicht.

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
04.03.2021 09:54:38 VBANeuling123
NotSolved
Blau Hyperlinks mit gleicher Addresse ändern
06.03.2021 18:26:19 xlKing
NotSolved
08.03.2021 13:53:29 Gast93786
NotSolved