Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Hyperlink Ziel 'ausrichten' | Herbers Excel-Forum


Betrifft: Hyperlink Ziel 'ausrichten' von: TommiH
Geschrieben am: 26.01.2010 17:01:29

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

  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: Josef Ehrensberger
Geschrieben am: 26.01.2010 17:13:57

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



  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: TommiH
Geschrieben am: 26.01.2010 17:26:13

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


  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: Josef Ehrensberger
Geschrieben am: 26.01.2010 17:32:48

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



  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: TommiH
Geschrieben am: 26.01.2010 17:45:06

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


  

Betrifft: Wer lesen kann, ... von: Josef Ehrensberger
Geschrieben am: 26.01.2010 17:52:37

... 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



  

Betrifft: AW: Wer lesen kann, ... von: TommiH
Geschrieben am: 26.01.2010 18:01:23

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


  

Betrifft: AW: Wer lesen kann, ... von: Josef Ehrensberger
Geschrieben am: 26.01.2010 18:08:42

Hallo Tommi,

hast du die Links per Formel erstellt?


Gruß Sepp



  

Betrifft: AW: Wer lesen kann, ... von: TommiH
Geschrieben am: 27.01.2010 09:03:12

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


  

Betrifft: AW: Wer lesen kann, ... von: TommiH
Geschrieben am: 27.01.2010 10:29:00

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


  

Betrifft: AW: Wer lesen kann, ... von: Josef Ehrensberger
Geschrieben am: 27.01.2010 10:54:25

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



  

Betrifft: AW: Wer lesen kann, ... von: TommiH
Geschrieben am: 27.01.2010 11:03:59

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


  

Betrifft: AW: Wer lesen kann, ... von: Josef Ehrensberger
Geschrieben am: 27.01.2010 11:27:32

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



  

Betrifft: AW: Wer lesen kann, ... von: TommiH
Geschrieben am: 27.01.2010 11:36:34

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


  

Betrifft: AW: Wer lesen kann, ... von: Josef Ehrensberger
Geschrieben am: 27.01.2010 11:50:10

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



  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: Luschi
Geschrieben am: 26.01.2010 17:28:31

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


  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: TommiH
Geschrieben am: 26.01.2010 17:35:38

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


  

Betrifft: AW: Hyperlink Ziel 'ausrichten' von: Luschi
Geschrieben am: 27.01.2010 11:37:05

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


Beiträge aus den Excel-Beispielen zum Thema "Hyperlink Ziel 'ausrichten'"