在工作表上刷新function

我有一个function,收集表4的名称

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

然后我想在我的工作表上的单元格中输出这个名字

 =LastSheetName() 

这按预期工作。

但是,工作表4将被删除,添加并且每次都会有不同的名称。

现在我的工作表上的公式不会更新,如果我想要添加新工作表4。 它保持为#VALUE !,显然它正在查看旧的纸张4,然后在新的纸张4就位之前,纸张被删除。

我需要添加一些东西来添加我的代码为“添加工作表”button,刷新这个公式=LastSheetName()后添加新工作表4。

我已经尝试添加application.Volatile到我的函数的开始,像上面一样,没有成功。

我曾尝试添加

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

到我的代码结束,也没有成功。

EDITL表4不是6抱歉

添加新工作表时,要刷新计算(默认情况下此操作不会触发计算),您可以将其添加到代码模块Thisworkbook

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

此外,你可以让你的函数总是返回最后一个工作表的名字,而不是一个合并的Worksheets(4) ,即

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

有这样的工作吗? 我确切地知道你在“Sheetheet(4).Name”上放置了什么样的表格,所以我使用了Sheet1。 我把这个放在“Workbook_NewWorksheet”事件中。

它获取工作簿中的第四个工作表的名称,并将其添加到Sheet1的单元格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