Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Hyperlinks inc. Adresse kopieren

VBA Hyperlinks inc. Adresse kopieren
28.08.2015 10:07:35
Benny
Hallo, ich habe nach langer suche auch in diesem Forum keine Lösung für mein Problem gefunden und hoffe das Ihr mir hier weiterhelfen könnt.
Ich möchte einen Hyperlink via VBA von einem Blatt auf ein anderes kopieren.
Mein bisheriger Code kopiert den Hyperlink nur als Text, also nur den der in der Zelle angezeigt wird.
Anbei hier ein Auszug aus meinem Makro:
Sub kopieren()
Worksheets("POT_GES").Activate
Letzte_POT_GES = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Startfeld_POT_GES = 5
Worksheets("Z1").Activate
Letzte_Z1 = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For A = 4 To Letzte_Z1 Step 4
Worksheets("Z1").Activate
Artikel = Cells(A + 3, 10).Value
Worksheets("POT_GES").Activate
Cells(Startfeld_POT_GES, 11) = Artikel
...
...
...
Der Inhalt aus "Artikel wird wie gesagt nur als Text kopiert, nicht als Hyperlink.
Mit Copy und paste Spezial kann ich leider nicht arbeiten da ich insgesamt ca. 420 Zeilen durchsuche und ich keine Lösung kenne die einen schlanken Code erlaubt.
Ich hoffe Ihr habt eine Lösung die einfach ist :)

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeite mit Range.Copy Destination:= ...
28.08.2015 11:30:48
Michael
Hallo Benny!
Du schreibst aktuell den Zellwert Deiner Hyperlink-Zellen in eine Variable und füllst dann die Zielzelle mit dem Wert der Variablen. Wenn Du gleich von Anfang an kopierst, wird auch der Hyperlink übernommen (egal ob Formel-Hyperlink oder echter Hyperlink), siehe Bsp:
In Tabelle1 steht in B9 ein Hyperlink, dieser soll in Tabelle2 in A1 übernommen werden...
Tabelle1.Range("B9").Copy Destination:=Tabelle2.Range("A1")
LG
Michael

Anzeige
AW: Arbeite mit Range.Copy Destination:= ...
31.08.2015 10:57:05
Benny
Servus, leider funktioniert das bei meinem Makro so nicht (oder ich sehe die Lösung noch nicht).
Das Makro durchläuft bei mir eine Arbeitsmappe mit ca. 450 Zeilen, wobei immer 4 Zeilen zu einem "Datenblock" gehören.
Mit: Tabelle1.Range("B9").Copy Destination:=Tabelle2.Range("A1") komme ich damit glaube ich nicht klar. Weiß nicht wie ich das einbauen sollte. Habe mit einer Copy Paste Lösung bereits Experementiert, jedoch läuft das Makro dann eeeewig lange oder stürzt sogar ab. Gibt es noch eine andere Lösung? Kann man einer Variablen nicht sagen das sie nicht nur Werte sondern auch die Formatierung mitnehmen soll?

Anzeige
AW: Nimm die Zeilennummer in Deine Schleife auf...
31.08.2015 11:07:34
Michael
Hallo Benny!
durchläuft bei mir eine Arbeitsmappe mit ca. 450 Zeilen
Du meinst sicherlich Tabellenblatt mit 450 Zeilen. Du kannst ja die Zeilennummer der Quell- sowie Zielzelle jeweils in eine Schleife aufnehmen, zB um von Tabelle1 B9:B459 nach Tabelle 2 B1:B450 die Hyperlinks zu übertragen:
    For i = 1 To 450
Tabelle1.Range("B" & i + 8).Copy Destination:= _
Tabelle2.Range("B" & i)
Next
Kann man einer Variablen nicht sagen das sie nicht nur Werte sondern auch die Formatierung mitnehmen soll?
Prinzipiell stellt Excel die Möglichkeit zur Verfügung nur bestimmt Eigenschaften einer kopierten Zelle zu übernehmen (nur Werte, nur Formate,... ). Das bringt Dir aber in dem Fall auch nichts - weil beim Übertragen des Hyperlink-Formats dennoch nicht der eigentlich Hyperlink kopiert wird. Das Einfachste ist hier wirklich einfach die Zelle direkt zu kopieren, w. o. beschrieben.
LG
Michael
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Hyperlinks in Excel mit VBA kopieren und einfügen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Erstelle ein neues Modul: Rechtsklicke im Projektfenster auf deine Arbeitsmappe, wähle Einfügen > Modul.

  3. Füge den folgenden Code ein:

    Sub HyperlinkKopieren()
       Dim i As Long
       Dim LetzteZeile As Long
    
       ' Ziel- und Quell-Tabellenblätter definieren
       Dim QuellBlatt As Worksheet
       Dim ZielBlatt As Worksheet
    
       Set QuellBlatt = Worksheets("POT_GES")
       Set ZielBlatt = Worksheets("Z1")
    
       ' Letzte Zeile im Quellblatt ermitteln
       LetzteZeile = QuellBlatt.Cells(Rows.Count, 1).End(xlUp).Row
    
       ' Hyperlink kopieren und einfügen
       For i = 5 To LetzteZeile
           QuellBlatt.Cells(i, 11).Copy Destination:=ZielBlatt.Cells(i - 4, 10)
       Next i
    End Sub
  4. Führe das Makro aus: Klicke auf F5 oder wähle das Makro aus der Liste aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Hyperlink wird nicht kopiert: Stelle sicher, dass du die Copy Destination-Methode verwendest, um den gesamten Zellinhalt, inklusive Hyperlinks, zu kopieren.

  • Makro läuft sehr langsam: Überprüfe, ob du mehr Zellen als nötig kopierst. Reduziere die Anzahl der Zeilen, die durchlaufen werden, um die Geschwindigkeit zu erhöhen.


Alternative Methoden

Eine alternative Möglichkeit, Hyperlinks zu kopieren, ist die Verwendung von PasteSpecial. Wenn du jedoch mit großen Datenmengen arbeitest, ist die direkte Methode mit Copy Destination in der Regel schneller und effizienter.


Praktische Beispiele

Hier ist ein Beispiel, wie du in einem anderen Szenario Hyperlinks kopieren kannst. Angenommen, du hast in Tabelle1 einen Hyperlink in Zelle B9 und möchtest ihn in Tabelle2 in Zelle A1 kopieren:

Sub BeispielHyperlinkKopieren()
    Tabelle1.Range("B9").Copy Destination:=Tabelle2.Range("A1")
End Sub

Dieses Beispiel zeigt, wie einfach es ist, einen einzelnen Hyperlink direkt zu kopieren.


Tipps für Profis

  • Verwende With-Anweisungen: Um deinen Code lesbarer und effizienter zu gestalten, kannst du With-Blöcke verwenden.

    With QuellBlatt
       .Cells(i, 11).Copy Destination:=ZielBlatt.Cells(i - 4, 10)
    End With
  • Fehlerbehandlung einbauen: Es ist sinnvoll, Fehlerbehandlungen in dein Makro einzufügen, um unerwartete Probleme zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich nur die Adresse eines Hyperlinks kopieren?
Um nur die Adresse zu kopieren, kannst du den folgenden Code verwenden:

Dim hyperlinkAdresse As String
hyperlinkAdresse = QuellBlatt.Cells(i, 11).Hyperlinks(1).Address
ZielBlatt.Cells(i - 4, 10).Value = hyperlinkAdresse

2. Kann ich mehrere Hyperlinks gleichzeitig kopieren?
Ja, du kannst eine Schleife verwenden, um mehrere Hyperlinks zu kopieren, wie im obigen Beispiel gezeigt. Stelle sicher, dass du die richtigen Zellreferenzen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige