2017-04-20 65 views
0

刷新funtion我有我的工作表工作表上

=LastSheetName() 

這工作按計劃收集4

Function LastSheetName() 

Application.Volatile True 
LastSheetName = Worksheets(4).Name 

End Function 

然後我想表的名稱輸出單元內同名的函數。

但是,工作表4將被刪除,添加並且每次都會有不同的名稱。

現在當我添加新工作表4時,我工作表上的公式不會更新。它保持爲#VALUE !,顯然它正在查看舊的工作表4,然後在新的工作表4到位之前刪除工作表。

我需要的東西在我的代碼的結束爲刷新這個公式=LastSheetName()「添加表」按鈕添加後還增加了新的工作表4.

我曾嘗試加入application.Volatile到年初我功能,如上所述,沒有成功。

我曾嘗試加入

Worksheets(4).EnableCalculation = False 
Worksheets(4).EnableCalculation = True 

爲了我的代碼,沒有成功要麼結束。

EDITL Sheet 4 not 6對不起

+0

「工作表(6)」與您稱爲「工作表4」的工作有什麼關係?目前還不清楚你在說什麼。 –

+0

也許[這個答案](http://stackoverflow.com/questions/27169070/identifying-a-worksheet-other-than-by-its-name/27169154#27169154)及其中的參考是有幫助的 – Ioannis

+1

功能名稱的外觀比如你正在尋找最後一張表格的名字,而不是你的工作簿中的「表格4」或第6張表格。考慮到這一點,也許嘗試'LastSheetName = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name' - 這將不包括圖表工作表。只需使用'Sheets'而不是'Worksheets'來包含圖表。 –

回答

0

做了這樣的工作嗎?我確切地知道你在試圖放置'工作表(4)。名稱'的表格,所以我使用了Sheet1。我把它放在'Workbook_NewWorksheet'事件中。

它獲取工作簿中的第四個工作表的名稱並將其添加到工作表添加到工作簿時Sheet 1的單元格A1。這不關心何時從工作簿中刪除工作表。當woksheet被刪除工作表Sheet1單元格A1沒有更新

Private Sub Workbook_NewSheet(ByVal Sht As Object) 

    Dim ws As Worksheet 
    Set ws = ThisWorkbook.Worksheets("Sheet1") 

    Dim ws4 As Worksheet 
    Set ws4 = ThisWorkbook.Worksheets(4) 

    ws.Range("A1").Value = ws4.Name 

End Sub 
1

要刷新在添加新的工作表你的計算(這個動作在默認情況下不會觸發計算),您可以添加該代碼模塊Thisworkbook

Private Sub Workbook_NewSheet(ByVal Sh As Object) 
    Application.Calculate 
End Sub 

此外,您還可以讓你的函數總是而不是返回最後一個工作表的名稱harcoded Worksheets(4),即

LastSheetName = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name