工作表上

问题描述:

刷新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://*.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'来包含图表。 –

做了这样的工作吗?我确切地知道你在试图放置'工作表(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 

要刷新在添加新的工作表你的计算(这个动作在默认情况下不会触发计算),您可以添加该代码模块Thisworkbook

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

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

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