Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在工作表上刷新函数_Vba_Excel - Fatal编程技术网

Vba 在工作表上刷新函数

Vba 在工作表上刷新函数,vba,excel,Vba,Excel,我有一个函数可以收集第4页的名称 Function LastSheetName() Application.Volatile True LastSheetName = Worksheets(4).Name End Function 然后我想在工作表的单元格中输出这个名称 =LastSheetName() 这正是我们想要的 但是,第4页将被删除、添加,并且每次都有不同的名称 现在,我的工作表上的公式不会像我希望的那样在添加新的工作表4时更新。它保持为#值!,很明显,它正在查看旧的第4页,然

我有一个函数可以收集第4页的名称

Function LastSheetName()

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

End Function
然后我想在工作表的单元格中输出这个名称

=LastSheetName()
这正是我们想要的

但是,第4页将被删除、添加,并且每次都有不同的名称

现在,我的工作表上的公式不会像我希望的那样在添加新的工作表4时更新。它保持为#值!,很明显,它正在查看旧的第4页,然后在新的第4页就位之前,该页被删除

我需要在“添加工作表”按钮的代码末尾添加一些内容,该按钮在添加新工作表4后刷新此公式
=LastSheetName()

我尝试将
application.Volatile
添加到函数的开头,如上所述,但没有成功

我试着添加

Worksheets(4).EnableCalculation = False
Worksheets(4).EnableCalculation = True
在我的代码末尾,也没有成功


EDITL Sheet 4不是6对不起

这样行吗?我完全确定你想在哪张纸上写“工作表(4).Name”,所以我用了Sheet1。我把它放在“工作簿\新工作表”事件中

它获取工作簿中第四个工作表的名称,并在将工作表添加到工作簿时将其添加到Sheet1的单元格A1中。从工作簿中删除工作表时,这不起作用。删除工作表时,不会更新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的
工作表(4)
,即

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

工作表(6)
与您所称的
工作表4有什么关系?不清楚你在说什么。也许其中的引用是有用的。函数名看起来像是在查找最后一页的名称,而不是工作簿中的第4页或第6页。考虑到这一点,可以尝试使用
LastSheetName=thiswoolk.Worksheets(thiswoolk.Worksheets.Count)。Name
-这不包括图表表。仅使用
工作表
而不是
工作表
来包含图表工作表。另一种方法是清除
工作表4
上单元格的内容,然后将新数据复制到其中。您不必删除工作表,您的参考资料也不会丢失。