Clever-Excel-Forum

Normale Version: Hyperlink-Aufruf von Beiträgen in ausgeblendeten Tabellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Freunde,

In einem Rezeptbuch habe ich im Tabellenblatt "Speiseplanübersicht" ein paar Einträge mittels Hyperlink auf weitere Tabellenblätter verlinkt. Erzeugt wurden diese mit dem Rechtsklick Hyperlink ==> Hyperlink einfügen.

Beispiel:

Das Wort Schweinerückensteak im Blatt Speiseplanübersicht ==> Link auf Tabellenblatt "Schwein" A1
Hähnchenschenkel in Chilimarinade ==> Link auf Tabellenblatt "Geflügel" A23
Rindergulasch nach ungarischem Originalrezept ==> Link auf Tabellenblatt "Rind" A100 usw.

In den verlinkten Tabellenblättern befinden sich entsprechende Rezepte. Soweit, so gut. Die Tabellenblätter mit den Rezepten (aktuell 5 - Tendenz steigend) habe ich ausgeblendet, dadurch komme ich jetzt mit dem Hyperlink nicht mehr an die Einträge. Gibt es hierfür eine Möglichkeit zu realisieren, dass ich die Rezepte auch im ausgeblendeten Zustand erreiche oder muss ich sie jedes Mal wieder einblenden?

Sollte für eine effektive Hilfe eine Musterdatei nötig sein, kann ich sie erst heute Abend einstellen.

Schon jetzt ein Dankeschön für eure Hilfe.
Hallo,

ich habe mit VBA wenig am Hut - ich gehe mal davon aus, dass du noch effektivere Lösungen erhälst, aber so könnte es klappen:

Kopiere den folgenden Code in das erste Tabellenblatt:

Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'http://www.herber.de/forum/archiv/400to404/402782_per_Hyperlink_auf_ausgeblendetes_Blatt_springen.html
    Dim strAdr As String
    Dim strSht As String
    strAdr = Target.SubAddress
    strSht = Replace(Left(strAdr, Len(strAdr) - InStr(1, StrReverse(strAdr), "!")), "'", "")
    Sheets(strSht).Visible = xlSheetVisible
    Sheets(strSht).Activate
End Sub

Damit die einzelnen Tabellenblätter wieder ausgeblendet werden kopierst du in die Module der ausgeblendeten Tabellenblätter den folgenden Code:

Code:
Private Sub Worksheet_Deactivate()
Me.Visible = xlSheetVeryHidden
End Sub
Hi Peter,

lieben Dank - das war die Lösung. Klappt alles so, wie ich es mir vorstelle.
Hallo Günter,

ich poste jetzt trotzdem mal meinen Vorschlag.
Sämtlicher Code steht im Modul 'DieseArbeitsmappe':

Code:
'Modul DieseArbeitsmappe

Option Explicit

Private strStarter As String
Private strV As String

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
  If strStarter = Sh.Name Then
    strStarter = ""
  Else
    If strV <> "" Then
      Sh.Visible = strV
      strV = ""
    End If
  End If
End Sub

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Dim strHLControl() As String
  strHLControl = Split(Target.SubAddress, "!")
  strStarter = ActiveSheet.Name
  With Worksheets(strHLControl(0))
    strV = .Visible
    .Visible = -1
    Application.Goto .Range(strHLControl(1)), True
  End With
End Sub

Gruß Uwe
Hi Uwe,

danke für deinen Lösungsvorschlag. Habe ihn sogleich getestet, allerdings folgenden Fehler erhalten:

1. Fehlermeldung

[attachment=226]

2. Debuggermarkierung

[attachment=228]

Und da ich VBA-technisch gesehen so gut wie keine Ahnung habe, weiß ich natürlich nicht, was nicht in Ordnung ist.
Hallo,

das hilft dir jetzt zwar nichts - aber bei mir hat der Code ohne Fehlermeldung funktioniert.
Hi Peter,

(17.05.2014, 18:54)Peter schrieb: [ -> ]Hallo,

das hilft dir jetzt zwar nichts - aber bei mir hat der Code ohne Fehlermeldung funktioniert.

stimmt - hilft nicht. *ganzbreitgrinsundwegduck* :D

Ne, im Ernst. Aufgrund deines Erfolgs habe ich nochmals alles gelöscht, neu reinkopiert und erneut getestet. Hätte ja sein können, dass beim Kopieren eventuell eine Zeile vergessen wurde. Aber auch bei diesem Versuch habe ich die vorhin beschriebenen Meldungen erhalten.
Hallo Günter,

ich habe im Code von Uwe mal eine Fehlerbehandlung eingebaut. Könntest Du Sie mal ersetzen und uns die Daten der MsgBox mitteilen?

Code:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Dim strHLControl() As String
  strHLControl = Split(Target.SubAddress, "!")
  strStarter = ActiveSheet.Name
  On Error GoTo Fehlermeldung
  With Worksheets(strHLControl(0))
    strV = .Visible
    .Visible = -1
    Application.Goto .Range(strHLControl(1)), True
  End With
  Exit Sub
Fehlermeldung:
  MsgBox Worksheets(strcontrol(0)).Name & vbCr & Range(strHLControl(1)).Address
End Sub
Hi Stefan,

das ist das Ergebnis:

[attachment=229]

Nach Wegklicken der Msg-Box wurde mir noch die Zeile "Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)" gelb unterlegt.
Hallo Günter,

sorry, hatte die Variable falsch geschrieben :16:

Code:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Dim strHLControl() As String
  strHLControl = Split(Target.SubAddress, "!")
  strStarter = ActiveSheet.Name
  On Error GoTo Fehlermeldung
  With Worksheets(strHLControl(0))
    strV = .Visible
    .Visible = -1
    Application.Goto .Range(strHLControl(1)), True
  End With
  Exit Sub
Fehlermeldung:
  MsgBox Worksheets(strHLControl(0)).Name & vbCr & Range(strHLControl(1)).Address
End Sub
Seiten: 1 2