Probleme mit Hyperlink-Aufruf aus ausgeblendeten Tabellen
#1
Hallo,

ich habe unter folgendem Link: http://www.clever-excel-forum.de/thread-450.html einen sehr hilfreichen Code gefunden um ausgeblendete Tabellen über einen Hyperlink erreichen zu können.
Ich habe jetzt ein Deckblatt für meiner unterschiedlichen Tätigkeiten und möchte aus diesem meine ausgeblendeten Tabellen aufrufen. Klappt ohne Probleme.
Zusätzlich möchte ich gerne noch bei manchen Projekten einen Projektplan über einen Hyperlink aufrufen. Wenn ich das versuche erscheint die Fehlermeldung: "Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs" . (Der MSProject Plan wird zwar aufgerufen, aber die Fehlermeldung verunsichert mich) Auf Grund meiner bisher nicht vorhandenen VBA-Kenntnisse kann ich mit der vorgeschlagenen Hilfe leider nicht anfangen. Kann mir da jemand weiter helfen?


Ich würde mich freuen, wenn mir da jemand weiter helfen kann.
Viele Grüße
Jan



Der Code in "DieseArbeitsmappe" ist folgender:


Code:
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, strT As String, oName As Name
 strT = Target.SubAddress
 For Each oName In Names
   If oName.Name = strT Then
     strHLControl = Split(Mid(Replace(oName.RefersTo, "'", ""), 2), "!")
     strT = ""
     Exit For
   End If
 Next oName
 If strT <> "" Then
   strHLControl = Split(Replace(strT, "'", ""), "!")
 Else
   strHLControl(0) = Replace(strHLControl(0), "'", "")
 End If
 strStarter = ActiveSheet.Name
 On Error GoTo Fehler
 With Worksheets(strHLControl(0))
   strV = .Visible
   .Visible = -1
   Application.Goto .Range(strHLControl(1)), True
 End With
 Exit Sub
Fehler:
 MsgBox "Die Hyperlinkadresse scheint kein gültiger interner Link zu sein:" & _
         String(2, vbNewLine) & Target.SubAddress, vbExclamation
End Sub
Top
#2
Hallo Jan,

in welcher Zeile kommt denn der Fehler?
Lasse mal den Code schrittweise durchlaufen und schaue auf die Variableninhalte. und die eingeblendeten Tabellenblätter bzw. deren Namen.
Damit das geht, setze einen Haltepunkt, ab dem Du schrittweise weitermachst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hi,

der Fehler erscheint immer in der Zeile 30 (    strHLControl(0) = Replace(strHLControl(0), "'", "") ). Ich hab diese Zeile mal gelöscht und das Makro läuft trotzdem, aber dann wird mir die in Zeile 41 angegebene Fehlermeldung ausgegeben.

Lg Folke
Top
#4
Hallöchen,

Deine Array-Programmierung ist fehlerhaft.
Du kannst z.B. dem ersten Arrayelement (0) keinen Wert zuweisen, wenn das Array nicht korrekt deklariert ist.

Hier mal zum Test 3 Möglichkeiten:

Code:
Sub test()
Dim arr1
arr1 = Split("a,b,c", ",")
Dim arr2()
arr2 = Array("a", "b", "c")
Dim arr3(0)
arr3(0) = "a"
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Hallo,
erst einmal vielen Dank für die Rückmeldung. Kannst du mir bitte erklären, wo ich diese Möglichkeiten einsetzen soll? Bzw. muss ich dafür irgendwas löschen?
Wenn ich deinen Tipp einfach in den Quellcode einbaue kommt die gleiche Fehlermeldung wie vorher.

Lg
Top
#6
Hallöchen,

mein Tipp ist nicht einfach zum übernehmen, sondern zum ausprobieren und lernen Smile

In Deinem Code steht das

Dim strHLControl()

und später z.B. das

strHLControl = Split(Mid(Replace(oName.RefersTo, "'", ""), 2), "!")

Wenn Du mal in mein Beispiel schaust, dann siehst Du, dass die Dimensionierung des Array vor der Split-Funktion ohne Klammern kommt.

Also, wenn Du die Klammern entfernst, könnte schon was gehen und Du kannst Dir in der Überwachung anschauen, was.. Wichtig dabei ist, dass Du den Code mal mit F8 schrittweise durchgehst. Eventuell fügst Du dazu einen Haltepunkt im Makro ein. Der Code bleibt dann dort stehen und Du kannst mit F8 weitermachen.

Ob Dein Makro insgesamt das bringt, was Du erwartest, schauen wir dann. Der Fehler sollte aber erst mal weg sein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Hallo,

du hast natürlich Recht - ich bin ja zum Lernen hier.
Ich habe mich jetzt mal ein bisschen eingelesen und deine Vorschläge angewandt. Leider ohne Erfolg.
Methode 1 - Fehlermeldung "Fehler beim Kompilieren" . Keine Zuweisung an Datenfeld möglich(Zeile 17)
Methode 2 - Ursprüngliche Fehlermeldung
Methode 3 - wie Methode 1

Hast du noch einen Tipp ich werde mir mal angucken, was es mit dem Datenfeld auf sich hat.

Viele Grüße
Top
#8
HAllöchen,

meine Dim-Zeile würde dann so aussehen, das As String ist bei der Array-Variable auch nicht mehr dabei:
Dim strHLControl, strT As String, oName As Name


In der Zeile habe ich dann den Haltepunkt gesetzt
strT = Target.SubAddress

Da kommt beim Durchlauf zwar eine Meldung, dass der Code im Haltemodus nicht ausgeführt werden kann, geht mit F8 dann aber trotzdem weiter.

Da ich in meiner Datei noch keine Namen definiert habe, wird die Schleife nicht durchlaufen und ich bekomme danach einen Fehler. Bei Dir mit Bereichsnamen im Blatt sollte das nicht passieren.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


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