2016-11-08 12 views
0

現在、既存の「コンテンツ」シートにハイパーリンクを追加することにより、既存のマクロ対応ブックの機能を拡張しようとしています。ワークブックは、ダッシュボードのように機能します。「コンテンツ」シートのボタンコマンドは、リモートソースからテンプレートをプルするマクロをアクティブにし、追加された場所で識別しながらシート名を一意に変更し、ローカルブックにコピーして更新します内容が追加されたコンテンツシートの場所リストの一番下に表示されます。有効な複数の有効な参照を含むTOCハイパーリンクの追加

問題は、場所間で同じ計算が繰り返し実行され、同じブックで30枚までの場所がある場合に発生します。特定の場所に必要な特定の計算を見つけるために、エンドユーザーがすべてのタブをクリックするのに時間がかかります。それで、私が望んでいたのは、問題の場所に関連する最初の計算にリンクするコンテンツページにハイパーリンクを作成することでした。例えば

ロケーションAロケーションB 4.どのように関連する場所のための最初の計算を含むシート識別するを有するが、それに関連付けられた3つの異なる計算を持って?

私の考えは:はブック全体を通して、その後、グループ化シートという名前場所X(Calcのn)を反復処理し、それはコンテンツシートをソートし、新しい場所を追加することにより実現し:私は、ソートのコード(下記参照EDIT)を持っています目次シート上の新しい順序に基づいてワークシートのグループをワークブックの後ろにプッシュすることができます。私はこれがハイパーリンクを挿入する理想的な場所だと思っていますが、どうやってそれをどうやって行くのかは分かりません。おそらく宣言し、現在選択されている場所の値を文字列変数に代入し、論理比較を行い、その場所に割り当てられたシートの数を数え、場所名が変わったときにカウンタをリセットし、ハイパーリンクのアンカーカウンタは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

だから私は、そのアドレスの場所を追加する際のテンプレートからコピーされた最後のシートであるハイパーリンクを追加することによって、一時的な回避策を作りました。ただし、エンドユーザーがリンクされている計算を削除してもハイパーリンクを更新することはできないため、これは理想とは限りません。この結果を見て、私は最後のシートを使うことも受け入れられるだろうと信じています。その答えが顔の中で私を見つめているように感じる...私はそれを見ることができない。 –

答えて

0

移動され、シートのグループが問題を解決したハイパーリンクを追加します。

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 
関連する問題