excel 功能检查工作表是否存在

wkyowqbh  于 2022-11-18  发布在  其他
关注(0)|答案(4)|浏览(139)

我有一个函数,用于检查工作簿中是否已存在名为wsName的工作表。我遇到的问题是,如何在重新构建和删除On Error Resume Next的情况下运行该函数。我所期望的是运行宏并生成工作簿中不存在的工作表的副本,如果工作表已存在,然后打印出ErrorMsg,显示为"Unknown Error"。然而,我看到的是,即使工作表不存在,宏也会打印出ErrorMsg,并制作它的副本。我正在SheetExists上尝试这种方法,看看是否有一种方法可以让函数在不使用On Error Resume Next的情况下运行,因为我不希望宏忽略错误而我希望它打印出"Unknown Error"
第一个

lnlaulya

lnlaulya1#

你的函数代码总是到达最后一行,就像...
如果工作表对象存在,则必须放置一个代码行以退出函数:

Function SheetExists_(SheetName As String, wb As Workbook) As Boolean
On Error GoTo Message
SheetExists_ = Not wb.Sheets(SheetName) Is Nothing
If Not wb.Sheets(SheetName) Is Nothing Then Exit Function
Message:
    MsgBox "Unknown Error"
End Function

已编辑

Function SheetExists_(SheetName As String, wb As Workbook) As Boolean
On Error GoTo Message
SheetExists_ = Not wb.Sheets(SheetName) Is Nothing: Exit Function

Message:
    'reaching this part will (only) make it returning `False`...
End Function

请注意,上面的函数是SheetExists_。它有一个下划线字符的名称结束。我有另一个函数与此名称...

yhived7q

yhived7q2#

“SheetExists”函数将始终将“ErrorMsg”设置为“未知错误”。在SheetExists = Not wb.Sheets(SheetName) Is Nothing之后添加“Exit函数

unhi4e5o

unhi4e5o3#

现在的方法是,当工作表不存在时,将ErrorMsg设置为“Unknown Error”。这就是为什么在测试设置中,每张工作表都是不同的,所以每张工作表都会出现错误。您的函数仍然会给予False(不存在),但也会出现错误。

kqlmhetl

kqlmhetl4#

使用简单的函数进行检查,不要将工作表与工作表混淆

Public Function sh_Exist(TheWorkbook As Workbook, SheetName As String) As Boolean
Dim s As String
On Error GoTo errHandler
s = TheWorkbook.Sheets(SheetName).Name
sh_Exist = True
Exit Function
errHandler:
End Function

相关问题