我有一个收集工作表4的名称的函数
Function LastSheetName()
Application.Volatile True
LastSheetName = Worksheets(4).Name
End Function
然后我想在工作表的单元格中输出此名称
=LastSheetName()
这可以按预期工作。
但是,工作表4将被删除,添加,每次都会有不同的名称。
现在,当我想要添加新的工作表4时,我的工作表上的公式不会更新。它保持为#VALUE !,显然它正在查看旧纸张4,然后在新纸张4到位之前纸张被删除。
我需要在代码末尾添加一些“添加工作表”按钮,在添加新工作表4后刷新此公式=LastSheetName()
。
我尝试将application.Volatile
添加到我的函数的开头,如上所述,但没有成功。
我尝试过添加
Worksheets(4).EnableCalculation = False
Worksheets(4).EnableCalculation = True
到我的代码结束时,也没有成功。
EDITL表4不是6抱歉
答案 0 :(得分:1)
要在添加新工作表时刷新计算(默认情况下此操作不会触发计算),您可以将其添加到代码模块Thisworkbook
:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.Calculate
End Sub
此外,您可以使您的功能始终返回最后一个工作表的名称,而不是加密的Worksheets(4)
,即
LastSheetName = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name
答案 1 :(得分:0)
这样的事情有用吗?我确定你试图把'Worksheets(4).Name'放在哪张表上,所以我使用了Sheet1。我把它放在'Workbook_NewWorksheet'事件中。
当工作表添加到工作簿时,它获取工作簿中第四个工作表的名称并将其添加到Sheet1的单元格A1。从工作簿中删除工作表时,这不会处理。删除woksheet时,Sheet1 Cell 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