VBA Hyperlinks inc. Adresse kopieren

Bild

Betrifft: VBA Hyperlinks inc. Adresse kopieren
von: Benny
Geschrieben am: 28.08.2015 10:07:35

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 :)

Bild

Betrifft: AW: Arbeite mit Range.Copy Destination:= ...
von: Michael (migre)
Geschrieben am: 28.08.2015 11:30:48
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

Bild

Betrifft: AW: Arbeite mit Range.Copy Destination:= ...
von: Benny
Geschrieben am: 31.08.2015 10:57:05
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?

Bild

Betrifft: AW: Nimm die Zeilennummer in Deine Schleife auf...
von: Michael (migre)
Geschrieben am: 31.08.2015 11:07:34
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Hyperlinks inc. Adresse kopieren"