2017-09-04 60 views
0

我是VBA的新手,我正在使用Excel中的一個簡單項目。我有一個設備清單,每個部分分成不同的工作表。第一張工作表是一張包含所有設備清單的目錄。點擊一個會將用戶帶到該工作表的特定設備。目前,我已經打了一個宏按鈕叫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

您可以插入代碼片段注入子程序New_Entry(),從而同步的新創建:如圖所示在下面的VBA代碼段對應於最後Worksheet指數工作表並向其添加超鏈接。 –

+0

是的,但這隻會執行Sheet1(24)的超鏈接。我想這個問題真的是「最後一張」,然後「最後一張,B1」的正確語法。 – user3437137

回答

0

爲了達到效果,您可以申請我已經在我的評論描述,但不是硬編碼Sheet指數的解決方案適用Worksheets(Worksheets.Count),即

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 

希望這可以幫助

+0

謝謝亞歷克斯!我想我可以激活工作表1,然後使用 Activecell.End(xlDown).Offset(1,0)。選擇 突出顯示目錄列中的下一個空單元格,並使用您的代碼具有B2單元格內容複製並超鏈接到它。但是,情況似乎並非如此。有什麼建議麼?提前致謝。 – user3437137

+0

歡迎您!您可以根據附加需求/業務邏輯進一步修改代碼。如果滿意,請標記回答的問題,如果您有更多問題,請不要猶豫,單獨發佈。祝你的項目好運。最好的祝福, –