Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hyperlink per Vba

Hyperlink per Vba
19.04.2008 21:14:44
Christian

Hallo Forum,
folgenden Code von fcs habe ich im Archiv gefunden:


Sub HyperlinksSetzen()
Dim wks As Worksheet, Zelle As Range, Zeile As Long
Set wks = Worksheets("Tabelle1") 'Tabelle in der Hyperlinks eingefügt werden sollen, ggf.  _
anpassen
For Zeile = 2 To wks.Cells(wks.Rows.Count, 1).End(xlUp).Row Step 24
Set Zelle = wks.Cells(Zeile, 1)
wks.Hyperlinks.Add Anchor:=Zelle, Address:="", SubAddress:="'" & Zelle.Value & "'!A1"
Next
End Sub


Der Archivthread dazu:
https://www.herber.de/forum/archiv/864to868/t864333.htm
Nun kann ich den leider nicht auf meine gewünschten Bedürfnisse anpassen (siehe Level).
Wie muss der Code umgeschrieben werden, damit in Spalte I Hyperlinks per VBA erzeugt werden, deren Adresse in Spalte N und der geünschte Name in Spalte O stehen bzw. Hyperlinks in Spalte K erzeugt werden, mit der Adresse aus Spalte Q und dem Namen aus Spalte R.
Momentan werden die Hyperlinks per Formel erzeugt, aber diese werden von Excel nicht als Hypelinks erkannt, aber das ist für ein weiters Makro, welches mir von Luschi gepostet wurde, von Bedeutung.
Ein Ausschnitt aus dem Tabellenblatt zur Verdeutlichung meines Anliegens:
Es sind insgesamt 20 Hyperlinks, die per Vba erzeugt werden sollen.
Einfügen-Hyperlinks funktioniert hier auch nicht, da es sich um ständig wechselnde Bezüge handelt.
Für Anregungen und Unterstützung bedanke ich mich im Voraus (und auch danach)!
MfG Christian
TOP 10 EP

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ein Versuch
19.04.2008 22:26:17
Matthias L
Hallo Christian
unabhängig von Deinem neuen Beitrag habe ich mich mit Deinem Problem auseinandergesetzt.
Ich bin der Meinung Du hättest in Deinem alten Beitrag bleiben sollen. Aber das nur nebenbei.
Wenigstens hast Du ihn geschlossen.
Evtl. hift Dir das ja weiter.
https://www.herber.de/bbs/user/51711.xls
Userbild

AW: ein Versuch
19.04.2008 23:33:45
Christian
Hallo Matthias,
vielen Dank für Deine Unterstützung, nur hilft mir das nicht viel weiter.
Deshalb muss ich wohl weiter ausholen.
Mit meinen geringen Kenntnissen in vba gehe ich mal davon aus, das es einen Unterschied gibt, wenn ein Hyperlink per Formel oder mittels Menü Einfügen Hyperlink erstellt wird.
Und genau darin liegt mein Problem.
In dem Code, der von Luschi gepostet wurde, werden meiner Meinung nach nur "echte" Hyperlinks erkannt, und auch absolut korrekt ausgelesen und die Bildschirmansicht danach angepasst. Der Code von fcs erstellt auch "echte" Hyperlinks, auch diese werden mit Luschis Code richtig ausgelesen und danach die Bildschirmansicht angepasst.
Nur stehen meine Adressen nun nicht in Spalte A von Zeile 1 bis x, sondern in Spalte N bzw. Q.
Die Anpassung mit dem Zähler der Zeilenanzahl und der Startzeile habe ich auch schon hinbekommen, nur nicht das die richtige Adresse und Name hinterlegt wird (aus Spalte N oder Q und O oder R).
Ich benötige also einen echten variablen Hyperlink oder eine andere Lösung, die die Bilschirmansicht je nach aktiver Spalte anpasst.
Also wenn Spalte AD nach Hyperlink aktiv ist, dann Ansicht ab Spalte AA bzw. wenn Spalte P Oder U aktiv ist, dann Ansicht ab Spalte L.
Mit folgendem Code vom Sepp (Josef Ehrensberger) habe ich mal meine Hyperlinks ausgelesen, und die mit Formel erzeugten Hyperlinks werden dabei nicht erkannt:


Sub readLink()
Dim hLink As Hyperlink
Dim lngR As Long
lngR = 2
With Sheets("Tabelle1")
.Range("A2:B" & Rows.Count).Clear
For Each hLink In ActiveSheet.Hyperlinks
.Cells(lngR, 1) = hLink.Parent.Address(0, 0)
'als Text eintragen
' If hLink.Address = "" Then
' .Cells(lngR, 2) = hLink.SubAddress
' Else
' .Cells(lngR, 2) = hLink.Address
' End If
'oder als Hyperlink eintragen
.Hyperlinks.Add Anchor:=.Cells(lngR, 2), _
Address:=hLink.Address, _
SubAddress:=IIf(hLink.SubAddress <> "", hLink.SubAddress, ""), _
TextToDisplay:=IIf(hLink.Address = "", hLink.SubAddress, hLink.Address)
lngR = lngR + 1
Next
.Columns.AutoFit
End With
End Sub


Demnach muss ich meine Formel-Hyperlinks in "echte" Hyperlinks umwandeln, damit das was ich vorhabe auch klappt.
Und genau das ist es, was ich ohn Forumsunterstützung nie schaffen werde!!
MfG Christian

Anzeige
AW: ein Versuch
20.04.2008 00:19:54
Erich G.
Hi Christian,
probier mal


Sub HyperlinksSetzen2()
Dim lngZ As Long
For lngZ = 17 To Cells(Rows.Count, 14).End(xlUp).Row Step 3
ActiveSheet.Hyperlinks.Add Anchor:=Cells(lngZ, 9), Address:="", _
SubAddress:=CStr(Cells(lngZ, 14)), TextToDisplay:=CStr(Cells(lngZ, 15))
ActiveSheet.Hyperlinks.Add Anchor:=Cells(lngZ, 11), Address:="", _
SubAddress:=CStr(Cells(lngZ, 17)), TextToDisplay:=CStr(Cells(lngZ, 18))
Next lngZ
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

ganz großes Ding!!!
20.04.2008 01:57:16
Christian
Hallo Erich,
wirklich super!!
Rückmeldung ist doch Ehrensache, da ich ja auch öfter mal hier auf Formelfragen antworte, und ich leider feststellen muß, das ein Feedback meistens ausbleibt.
Nur noch eine Bitte:
Da ich doch etwas dazulerne möchte, würde ich gerne den Code verstehen können.
Könntest Du mir den Code bitte nochmal mit Kommentaren versehen, welche Logik dahintersteht?
Das würde mir unheimlich weiterhelfen, die unbekannte Welt der Vba verstehen zu lernen!
Nochmals vielen Dank und grüße nach Kamp-Lintfort
MfG Christian

Anzeige
AW: ganz großes Ding!!!
20.04.2008 12:00:02
Erich G.
Hi Christian,
wo soll ich anfangen mit den Kommentaren und wo aufhören?
Besser wäre, du würdest eine oder mehrere Fragen zum Code stellen.
Was ist unklar?
Das Dim?
Die For-Schleife über die Zeilen in Dreierschritten?
Der Aufruf der Add-Methode für Hyperlinks?
SubAddress:=CStr(Cells(lngZ, 14))
bedeutet z. B., dass der Wert, der in Zeile lngZ, Spalte N (14. Spalte) steht,
in einen String umgewandelt und dann als Subadresse verwendet wird.
Hilfreich wäre sicher an der einen oder anderen Stelle ein Blick in die VBA-Hilfe
(Cursor in einen unklaren begriff und dann Taste F1).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Danke an die Helfer
20.04.2008 12:36:31
Christian
Hallo Erich,
danke für die kleine Aufklärung, der Hinweis zur SubAdress war der Tip, den ich brauchte, um den Code an andere Tabellenblätter anzupassen.
Daran siehst Du, das mein Level bei Vba noch ganz ganz unten ist;-)
Nochmals vielen Dank für Deine Hilfe und auch Dank an die anderen Helfer, die sich mit meinen Fragen befasst und geantwortet haben.
MfG Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige