Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
524to528
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
524to528
524to528
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hyperlinks über VBA setzen?

Hyperlinks über VBA setzen?
02.12.2004 16:05:30
Korl
Hallo,
in meiner Datenbank habe ich in Spalte „D“ einen Personenschlüssel z.B. 1 bis 14 .
Darauf habe ich jeweils einen relativen Hyperlink gesetzt zu einen Zellnamen.
Einmal im Jahr verändern sich die Zuordnungen zu den Personenschlüssel in der Datenbank.
Nun meine Frage:
Kann ich das setzen der Hyperlinks im Tabellenblatt(„Versuch“), Spalte „D“ automatisch über VBA erledigen?
Also Sheets(„Versuch“).Columns(4) Zellinhalt „1“ zu Zellname „LWL_01“ dann „2“ zu „LWL_02“ usw. bis 14
Vorher würde ich die Hyperlinks löschen lassen.Den Code hierfür habe ich.
Gibt es eine solche Möglichkeit?
Wie müßte der Code aussehen?
Gruß Korl

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlinks über VBA setzen?
ransi


      
hallo korl
ich weiss nicht ob ich dich richtig verstanden habe, aber versuch mal so:
wenn 
in spalte d1:d14 deine werte stehn.
Public 
Sub test()
Dim i As Integer
For i = 1 To 14
     Sheets("versuch").Cells(i, 4).Hyperlinks.Add Anchor:=Cells(i, 4), _
      Address:="", _
      SubAddress:="lwl_0" & Cells(i, 4).Value, _
      TextToDisplay:="lwl_0" & Cells(i, 4).Value
Next
End Sub
ransi 


Anzeige
AW: Hyperlinks über VBA setzen?
02.12.2004 18:15:00
Korl
Hallo ransi,
erst mal ein Dankeschön an Dich, das Du Dir meiner annimmst.
Der Hyperlink soll in Tabelle(„Versuch“) in der gesamten Spalte „D“ gesetzt werden.
In Spalte „D“ stehen unterschiedliche Zahlen die einen Personenschlüssel darstellen.
z.B. Person x = 1; Person y = 3; usw.
Nun soll für den Personenschlüssel z.B. „1“ der Hyperlink gesetzt werden zum Zellnamen „LWL_01“
Im Ganzen dann so:
Personenschlüssel „1“ = Hyperlink nach „LWL_01“
Personenschlüssel „2“ = Hyperlink nach „LWL_02“
Personenschlüssel „3“ = Hyperlink nach „LWL_03“
usw. alle weiteren würde ich mir dann nachtragen.
Entschuldige wenn ich mich so unklar ausgedrückt habe.
Gruß Korl
Anzeige
AW: Hyperlinks über VBA setzen?
ransi


      
hallo korl  
hab das mit den zahlen 1,2,3 
in spalte d und den entsprechenden zellnamen mal getestet.
die alten links brauchst du nicht zu löschen, weil die neuen werden einfach drübergebügelt.
Public 
Sub test()
Dim zeile As Long
For zeile = Range("d65536").End(xlUp).Row To 1 Step -1
     Sheets("versuch").Cells(zeile, 4).Hyperlinks.Add Anchor:=Cells(zeile, 4), _
      Address:="", _
      SubAddress:="lwl_0" & Cells(zeile, 4).Value, _
      TextToDisplay:="lwl_0" & Cells(zeile, 4).Value
Next
End Sub
ransi 


Anzeige
AW: Hyperlinks über VBA setzen?
02.12.2004 20:12:32
Korl
Hallo ransi,
leider habe ich kaum Ahnung von VBA, das was ich mir zusammenschustere mache ich mit dem Recorder.
So wie ich Deinen Code sehe, setzt Du von z.B. „LWL_04“ die Zahl mit einer Zeile des Zielorts in Verbindung?
Diese Bezeichnungen „LWL_01“ oder LWL_04“ sind nur Namen die ich festgelegt habe für den Zieort. Sie könnten simpel gesprochen „Franz“ oder „Korl“ heißen.
Ich hätte mir gedacht, dass zunächst Variable angelegt werden müssen?
Ich könnte auch die Zahlen die in Spalte“D“ liegen, ersetzen. z.B. 1=LWL-01, was ich sogar machen werde, wenn sich die Datenbank vergrößert. Ich will mir hier nur eine schnelle Schreibweise ermöglichen.
Also wenn immer der Wert z.B. „LWL-01“ in Spalte“D“ gefunden wird (der wird ca. auf 20 bis 40 unterschiedlichen Zeilen verteilt zu finden sein)soll auf diesen Wert ein Hyperlink gesetzt werden der mich zum Zellnamen „LWL_01“ führt.
Findet er in Spalte „D“ den Wert „4“ soll er mich zum Zellnamen „LWL_04“ führen.
Ich habe es sicherlich laienhaft dargestellt, vielleicht wirst Du jetzt etwas klüger aus meinem Geschreibsel.
Die jetzige Datenbank umfasst 700 Zeilen mit 14 unterschiedlichen Zuordnungen, kann aber auf 21.000 Zeilen mit 182 Zuordnungen anwachsen.
Gruß Korl
Anzeige
beispielmappe
ransi
hallo korl
hab noch ein wenig probiert und geändert.
schau mal hier:
https://www.herber.de/bbs/user/14286.xls
in a1:a14 sind die benannten zellen.
der code macht folgendes:
er durchsucht jede nichtleere zelle in D:D.
eine nach der anderen.
er nimmt den text der zelle und bastelt sich die linkadresse zusammen.
dann kommt die nächste zelle.
SubAddress:="lwl_" & Cells(zeile, 4).Text, hier wird die zieladresse für den link festgelegt. Sie setzt sich zusammen aus dem string "lwl_" und dem text in der zelle.
wenn du die benannten zellnamen im Klartext in die zellen schreibst, musst du die zeile ändern in:
SubAddress:=Cells(zeile, 4).Text
hoffentlich hab ich dich jetzt richtig verstanden.
wenn nicht, ruhig nochmal melden, oder lade mal ein beispiel hoch.
ransi
Anzeige
AW: beispielmappe
03.12.2004 15:33:05
Korl
Hallo ransi,
Deine Demoarbeitsmappe für mich entspricht im Grunde meinen Vorstellungen.
Den Code habe ich in meine Arbeitsmappe eingebunden, da aber mein Zahlenformat für Spalte „D“ auf Standard steht, bin ich bei den Einerzahlen angeeckt. Nachdem ich das Zahlenformat angepasst habe, lief alles bestens. Nur in der 1. Zeile habe ich einen formatierten Namen, mit Hintergrundfarbe und so stehen, der auch verlinkt wurde.
Kann die Verlinkung erst ab „D2“ beginnen?
Aber… vielleicht zum Verständnis was eigentlich in Spalte „D“ eingetragen wird.
LWL = ist das Kürzel für die Kreisstadt Ludwigslust, die Nr. anschließend ist nur noch mal eine Unterteilung. Der Hyperlink führt mich zu einer vollständigen Adresse.
Mein Ziel wäre nun aber mehrere Kreise in meine Datenbank einzubinden, was mit jetzigem Code nicht möglich ist.
Besteht die Möglichkeit als Anwender den Zellwert in Spalte „D“ und die Zielzelle mit Namen selber festzulegen?
Es ist nun zu dumm, dass der Zellwert nicht identisch sein kann mit dem Namen der Zielzelle, da der Bindestrich bei der Namensvergabe nicht angenommen wird. Sonst könnte man vielleicht sagen, Zellwert gleich Name Zielzelle, aber leider.
Meine Schreibweise würde wie folgt aussehen:
Zellwert : LWL-01 zu Zellname LWL_01
Zellwert: HRO-09 zu Zellname HRO_09
Zellwert: OVP-13 zu Zellname OVP_13 usw.
Lässt sich so etwas einrichten?
Ransi, entschuldige bitte meine umständliche Erläuterung.
Gruß Korl
Anzeige
AW: beispielmappe
03.12.2004 17:39:56
Korl
Hallo ransi,
ich hätte da noch so ein Gedanken.
Für die Spalte "D" werde ich sowieso eine Gültigkeit festlegen, sodass ich festvorgegebene Zellwerteingabe habe. Wenn ich neben dieser Spalte nun den Zielnamen einschreibe, den ich vergeben werde, läßt sich da nicht mit der Formel "VERGLEICH" im Code etwas machen?
Dann könnte ich doch durch die "Gültigkeit" = Name "Zellwert" nach belieben die Zellwerte festlegen, oder?
Ist nur so ein naiver Gedanke von mir.
Gruß Korl
AW: beispielmappe
ransi
hallo korl
das das ganze erst in d2 losgehn soll habe ich hier eingestellt.
For zeile = Range("d65536").End(xlUp).Row To 2 Step -1, also 2 anstatt 1.
das mit dem "_" anstatt "-" wir hier gemacht.
SubAddress:=Replace(Cells(zeile, 4).Text, "-", "_"), also einfach den bindestrich durch den unterstrich ersetzen.
TextToDisplay:=Cells(zeile, 4).Text legt noch den text fest der angezeigt werden soll.
du kannst jetzt also den zellwert im klartext eingeben.
habe nochmal eine beispielmappe drangehängt.
https://www.herber.de/bbs/user/14327.xls
musst allerdings sicherstellen das die namen auch wirklich vergeben sind, sonst geht der link ins leere.
hast du ja an deiner überschrift gemerkt.
ransi
Anzeige
ransi, es funktioniert Suuuper!
03.12.2004 19:52:37
Korl
Hallo ransi,
es funktioniert genauso so wie ich mir es vorgestellt habe.
Das Du mir den Code auch noch erläutert hast, verdienst Du noch ein extra Lob.
Ich freue mich riesig darüber, Danke für Deine Mühe und Geduld mit mir.
Gruß Korl
freut mich wenns klappt...
ransi
hallo korl
danke für die rückmeldung
ransi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige