VBA:使用function来设置新的工作表

我经常使用那个我想要修改的函数,以便能够立即设置添加的表单,就像这样

Set ShP = DeleteAndAddSheet("Name") 

所以这里是function:

 Public Function DeleteAndAddSheet(ByVal SheetName As String) As Worksheet For Each aShe In Sheets If aShe.Name <> SheetName Then Else Application.DisplayAlerts = False aShe.Delete Application.DisplayAlerts = True Exit For End If Next aShe Sheets.Add after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = SheetName DeleteAndAddSheet = ThisWorkbook.Worksheets(Worksheets.Count) End Function 

当设置函数的输出“Object variable or With variable not set”时,我在最后一行出现错误“91”

我试过表格和工作表,他们都没有工作…

任何想法?

更改

 DeleteAndAddSheet = ThisWorkbook.Worksheets(Worksheets.Count) 

 set DeleteAndAddSheet = ThisWorkbook.Worksheets(Worksheets.Count) 

你需要把它变成一个SubFunction不能改变它正在工作的单元格,所以Application.DisplayAlert -statements,以及试图删除一个工作表会导致它抛出一个错误。

经过一些testing,似乎一个function会让你例如删除一张纸,但它不会让更改应用程序的设置。