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

Forumthread: Hyperlink Ziel 'ausrichten'

Hyperlink Ziel 'ausrichten'
TommiH
Hallöchen,
ich habe ein Problem. Ich habe ein Arbeitsblatt (A) in dem mehrere tausend Zeilen Text stehen welcher in mehrere Bereiche unterteilt ist. Über jedem Bereich gibt es eine Überschrift.
Diese Überschriften habe ich nun per VBA als eine Art Index auf ein Arbeitsblatt 'Index' kopiert und Hyperlinks vom Index zu (A) angelegt.
Nun das Problem. Wenn ich auf einen Hyperlink auf 'Index' mit der Maus klicke, dann lande ich brav auf (A) und an der passenden Stelle, ABER! ;) - ich würde den Sprung gerne so ausführen, dass ich auf (A) so lande, das die Zeile ÜBER! dem Sprungziel die oberste Zeile auf dem Bildschirm ist.
Kann man so eine 'Ausrichtung' irgendwie durchführen?
LG,
Tommi
Anzeige
AW: Hyperlink Ziel 'ausrichten'
26.01.2010 17:13:57
Josef
Hallo Tommi
kopiere den Code in das Modul der Tabelle mit den Hyperlinks.
' **********************************************************************
' Modul: Tabelle3 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  On Error Resume Next
  Application.Goto Sheets(Left(Target.SubAddress, InStr(1, Target.SubAddress, _
    "!") - 1)).Range(Mid(Target.SubAddress, InStr(1, Target.SubAddress, "!") + 1)), _
    True
  
  On Error GoTo 0
End Sub

Gruß Sepp

Anzeige
AW: Hyperlink Ziel 'ausrichten'
26.01.2010 17:26:13
TommiH
Hallo Sepp,
sorry, das verstehe ich nicht. Die Tabelle ist ja nur eine Exceldatei, ohne Module. Wenn ich ein Modul anlege, und den Code da einfüge dann bleibt alles wie es ist. Ein Sprung auf den Link landet beim Link, aber der ist mal unten am Bildschirm, mal oben oder irgendwo dazwischen...
Kannst du das noch etwas erläutern?
LG,
Tommi
Anzeige
AW: Hyperlink Ziel 'ausrichten'
26.01.2010 17:32:48
Josef
Hallo Tommi,
ich hab ja nicht gesagt das du ein Modul anlegen sollst, sonder du sollst
den Code in das Modul der Tabelle kopieren.
Rechtsklick auf das Blattregister > Code anzeigen > in das rechte Fenster einfügen.
Gruß Sepp

Anzeige
AW: Hyperlink Ziel 'ausrichten'
26.01.2010 17:45:06
TommiH
Hallo Sepp,
fein, was bitte ist das Modul der Tabelle?
Zur Erklärung, ich habe in meiner Arbeitsmappe ja nun 2 Arbeitsblätter (nach meiner Verlinkungsaktion) welches von den beiden nehme ich um den Code zuzufügen? - oder sollte ich das VOR meiner Indexgenerierung machen?
...
Hm, ich habe es nun einmal in das 'Modul' mit dem Indexblatt getan, einmal in das 'Hauptarbeitsblatt' und einmal VOR meiner Indexgenerierung ins 'Hauptarbeitsblatt' (zu dem Zeitpunkt gibt es ja erst nur ein Blatt).
Erfolg - keiner. Der Sprung erfolgt wie immer zum Link aber der ist auf der Seite mal oben, unten, dazwischen...
LG,
Tommi
Anzeige
Wer lesen kann, ...
26.01.2010 17:52:37
Josef
... ist klar im Vorteil.
In meiner ersten Antwort schrieb ich: "kopiere den Code in das Modul der Tabelle mit den Hyperlinks."
Und in der Zweiten: "Rechtsklick auf das Blattregister > Code anzeigen > in das rechte Fenster einfügen."
Gruß Sepp

Anzeige
AW: Wer lesen kann, ...
26.01.2010 18:01:23
TommiH
Right - zu dem mit dem Lesen...
Ich habe doch geschrieben, ich habe es in beide! Blätter eingefügt (erst ins eine, dann ins zweite, dann in beide) und sogar einmal VOR meiner Aktion - Erfolg - keiner. Es ändert sich leider nichts.
Ich habe sogar nach jeder Einfügeaktion erst ausprobiert aber auch nochmal die Datei gespeichert und neu aufgerufen und dann probiert. Wie gesagt, kein Erfolg.
LG,
Tommi
Anzeige
AW: Wer lesen kann, ...
26.01.2010 18:08:42
Josef
Hallo Tommi,
hast du die Links per Formel erstellt?
Gruß Sepp

AW: Wer lesen kann, ...
27.01.2010 09:03:12
TommiH
Hallo Sepp,
ähm, nein, per VBA-Programm. Der Scriptausschnitt hier den ich hier mal bekommen habe tut ansonsten genau das was er soll ;)
With objWks
Maxzeilenzahl = .Cells(.Rows.Count, 1).End(xlUp).Row
For Zeile = 1 To Maxzeilenzahl
v1 = Left(.Cells(Zeile, 1), 2)
If v1 = "S." Or v1 = "Q." Or v1 = "Z." Then
objWksA.Cells.Hyperlinks.Add Anchor:=objWksA.Cells(ZeileA + 4, 2), Address:="", _
SubAddress:="'" & .Name & "'!" & .Cells(Zeile, 1).Address
objWksA.Cells(ZeileA + 4, 2).Value = " " & Chr(1) & " " & Mid(.Cells(Zeile, 1).Value, 1)
ZeileA = ZeileA + 1
End If
Next Zeile
End With
LG,
Tommi
Anzeige
AW: Wer lesen kann, ...
27.01.2010 10:29:00
TommiH
Hm,
nun habe ich manuell eine Lösung gefunden, die Frage ist, ob man die irgendwie in den Hyperlink mit einbauen kann.
Wenn ich VOR! dem Anspringen des Hyperlinks in der Datei wo der Hyperlink hinzeigt ganz ans Ende springe, dann verhält sich das ganze wie gewünscht.
Also wenn er 'von unten' kommend den Link anspringt klappt es - aber dazu muss ich immer vor dem Anklicken des HL in der Datei nach unten scrollen und dann einmal in eine Zelle klicken.
Die Frage ist nun ob man per Hyperlink 2 Stellen hintereinander anspringen kann, also erst z.B. in Zeile 10000 und dann zum gewünschten Ziel.
LG,
Tommi
Anzeige
AW: Wer lesen kann, ...
27.01.2010 10:54:25
Josef
Hallo Tommy,
dann nimm diesen Code.
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  On Error Resume Next
  Application.Goto Sheets(Replace(Left(Target.SubAddress, InStr(1, Target.SubAddress, _
    "!") - 1), "'", "")).Range(Mid(Target.SubAddress, InStr(1, Target.SubAddress, "!") + 1)), _
    True
  
  On Error GoTo 0
End Sub

Gruß Sepp

Anzeige
AW: Wer lesen kann, ...
27.01.2010 11:03:59
TommiH
Hallo Sepp,
klasse, danke, damit geht es nun _fast_, ich kann damit immerhin in die Zielzeille springen, so dass diese die oberste sichtbare Zeile in Excel ist.
Eigentlich wollte ich es zwar so haben das die Zeile ÜBER dem Ansprungziel die oberste Zeile ist, aber auch so geht es schon erstmal...
LG,
Tommi
Anzeige
AW: Wer lesen kann, ...
27.01.2010 11:27:32
Josef
Hallo Tommy,
das ist kein Problem.
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  On Error Resume Next
  Application.Goto Sheets(Replace(Left(Target.SubAddress, InStr(1, Target.SubAddress, _
    "!") - 1), "'", "")).Range(Mid(Target.SubAddress, InStr(1, Target.SubAddress, "!") + 1)).Offset(-1, 0), _
    True
  
  On Error GoTo 0
End Sub

Gruß Sepp

Anzeige
AW: Wer lesen kann, ...
27.01.2010 11:36:34
TommiH
Wau - perfekt!
Danke! - Genau so hatte ich es mir vorgestellt, schade allerdings das man das nicht direkt mit dem Hyperlink erreichen kann, ist halt ein Arbeitsschritt mehr das immer in die Datei zu packen.
Da muss ich doch mal schauen ob man das nicht auch per VBA da reinsetzen kann, so direkt nach dem anlegen des Arbeitsblattes.
Oh, eine Sache wäre aber doch noch ;) - kann man den Fokus (also die umrahmte Zelle) eigentlich auf das Ziel des Hyperlinks setzen? Jetzt ist es ja um die Zelle über dem HL. Wäre aber def. kein Problem wenn das nicht ginge - wie gesagt, so wie es jetzt ist kann es auf alle Fälle bleiben!
LG,
Tommi
Anzeige
AW: Wer lesen kann, ...
27.01.2010 11:50:10
Josef
Hallo Tommy,
auch das geht.
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  On Error Resume Next
  Application.Goto Sheets(Replace(Left(Target.SubAddress, InStr(1, Target.SubAddress, _
    "!") - 1), "'", "")).Range(Mid(Target.SubAddress, InStr(1, Target.SubAddress, "!") + 1)), _
    True
  ActiveWindow.SmallScroll -1
  On Error GoTo 0
End Sub

Gruß Sepp

Anzeige
AW: Hyperlink Ziel 'ausrichten'
26.01.2010 17:28:31
Luschi
Hallo Tommi,
schreibe ins Klassenmodul der Tabelle folgenden Vba-Code:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
ActiveWindow.ScrollRow = ActiveCell.Row - 1
ActiveWindow.ScrollColumn = ActiveCell.Column - 1
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Hyperlink Ziel 'ausrichten'
26.01.2010 17:35:38
TommiH
Hallo Luschi,
hm, also ein Klassenmodul habe ich angelegt und dann den Code eingefügt - Erfolg - keiner.
Kann es sein, das das nur bei bestimmten Excel-Versionen geht? Oder muss man für sowas noch irgendwo etwas aktivieren?
LG,
Tommi
AW: Hyperlink Ziel 'ausrichten'
27.01.2010 11:37:05
Luschi
Hallo Tommi,
hier ein kleines Beispiel: https://www.herber.de/bbs/user/67540.xls
In Tabelle1 gibt es 2 Hyperlinks.
Gruß von Luschi
aus klein-Paris
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

Hyperlink Ziel 'ausrichten' in Excel


Schritt-für-Schritt-Anleitung

  1. VBA-Code kopieren: Öffne das Arbeitsblatt, in dem die Hyperlinks erstellt wurden. Rechtsklicke auf das Blattregister und wähle "Code anzeigen". Füge den folgenden Code in das rechte Fenster ein:

    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
       On Error Resume Next
       Application.Goto Sheets(Replace(Left(Target.SubAddress, InStr(1, Target.SubAddress, "!") - 1), "'", "")).Range(Mid(Target.SubAddress, InStr(1, Target.SubAddress, "!") + 1)).Offset(-1, 0), True
    End Sub
  2. Hyperlinks erstellen: Erstelle deine Hyperlinks wie gewohnt. Stelle sicher, dass du die Hyperlinks per VBA-Programm generierst, um den Code korrekt auszuführen.

  3. Testen: Klicke auf einen Hyperlink und überprüfe, ob die Zeile über dem Ziel die oberste Zeile im Bildschirm ist.


Häufige Fehler und Lösungen

  • Problem: "Der Bezug ist ungültig" Popup erscheint.

    • Lösung: Überprüfe, ob die Zielzelle, auf die verwiesen wird, existiert. Stelle sicher, dass keine Leerzeilen oder fehlenden Daten zwischen den Hyperlinks und den Zielen vorhanden sind.
  • Problem: Hyperlink führt nicht zur gewünschten Position.

    • Lösung: Achte darauf, dass der VBA-Code im richtigen Arbeitsblattmodul eingefügt wurde. Der Code sollte im Modul der Tabelle mit den Hyperlinks platziert werden.

Alternative Methoden

Eine alternative Möglichkeit, das Ziel eines Hyperlinks auszurichten, besteht darin, den Scrollbefehl zu verwenden. Du kannst dies tun, indem du den folgenden Code in das Arbeitsblattmodul einfügst:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    ActiveWindow.ScrollRow = ActiveCell.Row - 1
    ActiveWindow.ScrollColumn = ActiveCell.Column - 1
End Sub

Dieser Ansatz kann in bestimmten Excel-Versionen besser funktionieren und die Zeile über dem Ziel als sichtbar festlegen.


Praktische Beispiele

Angenommen, du hast ein Arbeitsblatt mit mehreren Abschnitten, die durch Überschriften getrennt sind. Du möchtest, dass beim Klicken auf die Überschrift im Index die darüber liegende Zeile sichtbar wird. Dafür kannst du den oben genannten VBA-Code verwenden, um sicherzustellen, dass die Ansicht entsprechend angepasst wird.


Tipps für Profis

  • Verwende Offset: Mit der Offset-Methode kannst du die Sichtbarkeit der gewünschten Zelle weiter anpassen. Beispiel: Range("A1").Offset(-1, 0) zeigt die Zelle direkt über A1 an.

  • Scroll-Verhalten anpassen: Wenn du das Scroll-Verhalten weiter optimieren möchtest, experimentiere mit der SmallScroll Methode, um die Ansicht zu feintunen.


FAQ: Häufige Fragen

1. Ist der VBA-Code in allen Excel-Versionen kompatibel? Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, solange du die Makros aktiviert hast.

2. Warum funktioniert der Hyperlink nicht? Überprüfe, ob der Hyperlink korrekt erstellt wurde und dass der Zielbereich nicht durch andere Daten oder leere Zeilen blockiert ist. Achte auch darauf, dass du den Code im richtigen Modul eingefügt hast.

3. Kann ich auch Hyperlinks in Word verwenden, um Text mittig in einer Tabelle auszurichten? Ja, in Word kannst du auch Hyperlinks erstellen und den Text in einer Tabelle mittig ausrichten, indem du die Tabelleneigenschaften anpasst.

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