Das letzte Clever-Excel-Forum.de - Treffen
fand vom 15. - 17. September 2017 in Friedrichroda /
Thüringen / Region Großer Inselsberg statt.

Hyperlink-Aufruf von Beiträgen in ausgeblendeten Tabellen
#1
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.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
to top
#2
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
Gruß
Peter
to top
#3
Hi Peter,

lieben Dank - das war die Lösung. Klappt alles so, wie ich es mir vorstelle.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
to top
#4
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
to top
#5
Hi Uwe,

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

1. Fehlermeldung

   

2. Debuggermarkierung

   

Und da ich VBA-technisch gesehen so gut wie keine Ahnung habe, weiß ich natürlich nicht, was nicht in Ordnung ist.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
to top
#6
Hallo,

das hilft dir jetzt zwar nichts - aber bei mir hat der Code ohne Fehlermeldung funktioniert.
Gruß
Peter
to top
#7
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* Big Grin

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.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
to top
#8
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
Gruß Stefan
Win 7 / Office 2007
to top
#9
Hi Stefan,

das ist das Ergebnis:

   

Nach Wegklicken der Msg-Box wurde mir noch die Zeile "Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)" gelb unterlegt.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
to top
#10
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
Gruß Stefan
Win 7 / Office 2007
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste