2017-09-04 13 views
0

私はVBAを初めて使い、Excelで簡単なプロジェクトを進めています。私は装置の目録を持っています、それぞれの作品は別のワークシートに分かれています。最初のワークシートはすべての機器のリストを含む目次です。 1つをクリックすると、その特定の機器のワークシートが表示されます。現在、私はテンプレートのオフ新しいシートを作成しますNew_Entryというボタンにマクロを結び付けていますExcelでの目次を作成するVBA自己更新

Sub New_Entry() 
    Sheets.Add Type:= _ 
     "C:\Users\MyName\AppData\Roaming\Microsoft\Templates\Archive_Entry.xltx" 
    ActiveSheet.Move After:=Worksheets(Worksheets.Count) 
End Sub 

目次は自動的の内容で更新することは可能である場合、私は疑問に思って、例えば、ボタンを介して追加されるすべての新しいワークシートのセルB2(すなわち、その装置の名前)である。これは、ハイパーリンクを作成するための記録マクロです:

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
     "'Sheet1 (24)'!B1", TextToDisplay:="Sheet1 (24)!B1" 
+1

を助けるかもしれませんワークシートを作成してハイパーリンクを追加します。 –

+0

Trueですが、これはSheet1(24)のハイパーリンクのみを実行します。私は質問が本当に "最後のシート"と "最後のシートB1"の正しい構文であると思います。 – user3437137

答えて

0

すなわち、Worksheets(Worksheets.Count)を適用し、あなたは私が代わりにハードコーディングSheetインデックスの私のコメントで説明してきた解決策を適用することができ、結果を達成するために次のVBAのコードスニペットに示すように、インデックスが最後Worksheetに対応:

Sub New_Entry() 
    Sheets.Add Type:= _ 
    "C:\Users\MyName\AppData\Roaming\Microsoft\Templates\Archive_Entry.xltx" 

    ActiveSheet.Move After:=Worksheets(Worksheets.Count) 

    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ 
     "'Sheet1 (Worksheets(Worksheets.Count))'!B1", TextToDisplay:="Sheet1 (Worksheets(Worksheets.Count))!B1" 
End Sub 

希望これは、あなたは、このように新しいの作成を同期、サブルーチンNew_Entry()にコードスニペットを挿入することができ

+0

アレックスありがとう!私はシート1をアクティブにできると思ったのですが、 Activecell.End(xlDown).Offset(1,0)。 を選択して目次の列の次の空のセルを強調表示し、コードを使ってB2セルコンテンツがコピーされ、ハイパーリンクされています。しかし、それはそうではないようです。助言がありますか?前もって感謝します。 – user3437137

+0

あなたはようこそ!追加の要件/ビジネスロジックに対応して、コードをさらに変更することができます。満足している場合は質問に答えを記入し、ご質問がある場合は別途投稿することを躊躇しないでください。あなたのプロジェクトに幸運。宜しくお願いします、 –

関連する問題