2016-11-08 4 views
0

Ich bin derzeit auf der Suche nach der Funktionalität einer vorhandenen Makro-fähigen Arbeitsmappe durch Hinzufügen von Hyperlinks zu einem vorhandenen "Inhalt" Blatt. Die Arbeitsmappe funktioniert ähnlich wie ein Dashboard: Schaltflächenbefehle im Blatt "Inhalt" aktivieren Makros, die Vorlagen aus einer Remotequelle abrufen, den Blattnamen als eindeutig ändern und dabei den hinzuzufügenden Speicherort angeben, sie in die lokale Arbeitsmappe kopieren und aktualisieren den unteren Rand der Standortliste auf dem Inhaltsblatt mit dem hinzugefügten Standort.Hinzufügen von Inhaltsverzeichnis-Hyperlinks mit mehreren gültigen Referenzen verfügbar

Das Problem tritt auf, wenn ich Standorte mit mehreren Iterationen der gleichen Berechnungen zwischen den Standorten und bis zu 30 Blatt in derselben Arbeitsmappe habe. Der Endbenutzer braucht Zeit, um durch alle Registerkarten zu klicken, um die für den bestimmten Standort erforderliche spezifische Berechnung zu finden. Also, was ich gehofft hatte, wäre, einen Hyperlink auf der Inhaltsseite zu erstellen, der mit der ersten Berechnung in Bezug auf den betreffenden Ort verknüpft ist.

Zum Beispiel Standort A hat 3 verschiedene Berechnungen mit ihm verbunden, während Lage B 4. hat Wie würde ich erkennen, welches Blatt die erste Berechnung für den zugehörigen Ort enthält?

Meine Gedanken: Ich habe eine Art Code (EDIT: siehe unten) implementiert auf einen neuen Standort hinzugefügt, wo sie den Inhalt Blatt sortiert dann durchläuft die gesamte Arbeitsmappe, Gruppierung Blätter genannt Ort X (Calc n) und Verschieben der Arbeitsblattgruppe auf der Rückseite der Arbeitsmappe basierend auf der neuen Reihenfolge auf dem Inhaltsblatt. Ich denke, das wäre der ideale Ort, um den Hyperlink einzufügen, aber ich bin nicht sicher, wie ich das anstellen soll. Vielleicht deklariert und ordnet eine Zeichenkettenvariable den Wert der aktuell ausgewählten Position zu, führt einen logischen Vergleich durch und zählt die Anzahl der diesem Ort zugewiesenen Blätter, setzt den Zähler zurück, wenn sich der Positionsname ändert, und verwendet das aktive Blatt im Hyperlink - Anker Zähler gleich 0?

EDIT:

Dim Group_Sheets As Worksheet 
Dim wSheet As Variant 
Dim SortRng, rng As Range 

Set SortRng = Range(Range("A6"), Range("A6").End(xlDown)) 
For Each rng In SortRng 
    ReDim wSheet(0) 
    For Each Group_Sheets In ThisWorkbook.Worksheets 
     If Left(Group_Sheets.Name, Len(rng)) = rng Then 
      wSheet(UBound(wSheet)) = Group_Sheets.Name 
      ReDim Preserve wSheet(UBound(wSheet) + 1) 
     End If 
    Next 
    ReDim Preserve wSheet(UBound(wSheet) - 1) 
    With Worksheets(wSheet) 
     .Select 
     .Move after:=Worksheets(Worksheets.Count) 
    End With 
Next 
+0

Also habe ich eine temporäre Abhilfe durch Hinzufügen eines Hyperlinks, dessen Adresse ist das letzte Blatt von Vorlagen beim Hinzufügen eines Standorts kopiert. Dies ist jedoch alles andere als ideal, da es den Hyperlink nicht aktualisieren kann, wenn der Endbenutzer die verknüpfte Berechnung löscht. Nachdem ich die Ergebnisse gesehen habe, glaube ich, dass die Verwendung des letzten Blattes akzeptabel wäre. Es fühlt sich an, als ob die Antwort mich ins Gesicht starrt ... Ich kann es einfach nicht sehen. –

Antwort

0

den Hyperlink Hinzufügen, wenn die Gruppe von Blättern bewegt hat das Problem gelöst.

Set SortRng = Range(Range("A6"), Range("A6").End(xlDown)) 
For Each rng In SortRng 
    ReDim wSheet(0) 
    For Each Group_Sheets In ThisWorkbook.Worksheets 
     If Left(Group_Sheets.Name, Len(rng)) = rng Then 
      wSheet(UBound(wSheet)) = Group_Sheets.Name 
      ReDim Preserve wSheet(UBound(wSheet) + 1) 
     End If 
    Next 
    ReDim Preserve wSheet(UBound(wSheet) - 1) 
    With Worksheets(wSheet) 
     .Select 
     .Move after:=Worksheets(Worksheets.Count) 
    End With 
'Select the sheet to which the hyperlink directs HERE 
    Sheets(Sheets.Count).Select 
'Insert hyperlink HERE 
    TOC_Sheet.Hyperlinks.Add Anchor:=rng.Offset(0, 1), _ 
     Address:="", SubAddress:="'" & ActiveSheet.Name & "'!A1", _ 
     ScreenTip:=ActiveSheet.Name, _ 
     TextToDisplay:="Link" 
Next 
Verwandte Themen