确定纸张在Excel中使用VBA的工作簿存在
有时您必须检查是否存在在VBA宏/代码中的工作簿中创建或删除的工作表。我们可以使用函数/宏轻松地做到这一点。检查工作表是否存在的方法有多种。
我们将在本文中介绍以下方法:
{空} 1。用户定义的功能称为UDF2。通过消息框的子例程
第一个选项:用户定义函数
以下快照包含几个工作表名称,我们将检查A列中的工作表名称是否存在。
若要查找是否存在特定的工作表,我们需要按照以下步骤启动VB编辑器:单击“开发人员”选项卡。从“代码”组中,选择“ Visual Basic”。 *将以下代码复制到标准模块中
为了检查,我们将在单元格B2中将UDF用作= WorksheetExists(A2)
Option Explicit Function WorksheetExists(ByVal WorksheetName As String) As Boolean Dim Sht As Worksheet For Each Sht In ThisWorkbook.Worksheets If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = False End Function
-
在上图中,示例工作簿中不存在“ MasterSheet”;因此,公式给出的答案为False
代码说明:
该函数从执行其他活动的宏中获取“ WorksheetName”的值。如果您需要根据您的代码进行更改,则可以。
_For ThisWorkbook中的每个Sht.Worksheets_和_Next Sht_分别是循环的开始和结束部分。
然后_If Application.Proper(Sht.Name)= Application.Proper(WorksheetName)Then_ _ WorksheetExists = True_检查工作表名称是否与从主宏传递的工作表名称匹配。如果是这样,则WorksheetExists为True,我们可以退出该函数。否则,WorksheetExists = False返回到主宏。循环从第一张纸到下一张纸,直到检查完所有纸为止。
SecondOption:通过消息框的子例程
我们可以有一个普通的子例程来调用UDF,如果找到了指定的工作表,则将显示消息框,“工作表存在”。如果找不到,则会弹出msgbox,“找不到工作表”。
为了进行检查,我们将以下代码复制到标准模块中:
运行宏“ FindSheet”后,如果存在工作表,我们将获得以下消息框:
Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean If wb Is Nothing Then Set wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName) On Error GoTo 0 End With End Function Sub FindSheet() If WorksheetExists2("Sheet1") Then MsgBox "Sheet1 is in this workbook" Else MsgBox "Oops: Sheet does not exist" End If End Sub
如果工作表不存在,我们将显示以下消息框:
同样,我们可以有一个简单的IF循环,该循环检查工作表是否存在并在其后执行某些操作。
为了测试上面的宏,我们需要创建一个工作表名称“ Main”。这个宏非常简单,它循环遍历工作簿中的每个工作表,然后检查工作表名称是否不是MAIN。如果是MAIN,它将显示该工作表的A1中的文本,例如“ MAIN LOGIN PAGE”,否则将显示名称。单元格A1中的工作表
Sub test() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Main" Then ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = "MAIN LOGIN PAGE" End If Next ws End Sub
这只是检查工作表是否存在的另一种方法。如果存在,请执行操作A,否则,请执行操作B结论:*我们可以确定工作簿中是否存在工作表;我们可以根据需要使用UDF或子例程。
如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。
我们很高兴收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]