Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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)
Antworten 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
Antworten 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)
Antworten 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
Antworten 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)
Antworten 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
Antworten 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)
Antworten Top


Gehe zu:


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