Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
17.05.2014, 16:27
(Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2014, 16:28 von WillWissen.)
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 Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 12.04.2014
Version(en): Office 365
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
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi Peter,
lieben Dank - das war die Lösung. Klappt alles so, wie ich es mir vorstelle.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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 Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 12.04.2014
Version(en): Office 365
Hallo,
das hilft dir jetzt zwar nichts - aber bei mir hat der Code ohne Fehlermeldung funktioniert.
Gruß Peter
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hi Peter, (17.05.2014, 19: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.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 11.04.2014
Version(en): Office 2007
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 10 / Office 2016
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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 Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 11.04.2014
Version(en): Office 2007
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 10 / Office 2016
|