有时您必须检查是否存在在VBA宏/代码中的工作簿中创建或删除的工作表。我们可以使用函数/宏轻松地做到这一点。检查工作表是否存在的方法有多种。

我们将在本文中介绍以下方法:

{空} 1。用户定义的功能称为UDF2。通过消息框的子例程

第一个选项:用户定义函数

以下快照包含几个工作表名称,我们将检查A列中的工作表名称是否存在。

img1

若要查找是否存在特定的工作表,我们需要按照以下步骤启动VB编辑器:单击“开发人员”选项卡。从“代码”组中,选择“ Visual Basic”。 *将以下代码复制到标准模块中

img2

为了检查,我们将在单元格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

img3

  • 在上图中,示例工作簿中不存在“ MasterSheet”;因此,公式给出的答案为False

img4

代码说明:

该函数从执行其他活动的宏中获取“ 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

img5

如果工作表不存在,我们将显示以下消息框:

img6

同样,我们可以有一个简单的IF循环,该循环检查工作表是否存在并在其后执行某些操作。

img7

为了测试上面的宏,我们需要创建一个工作表名称“ 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

img8

这只是检查工作表是否存在的另一种方法。如果存在,请执行操作A,否则,请执行操作B结论:*我们可以确定工作簿中是否存在工作表;我们可以根据需要使用UDF或子例程。

img9

如果您喜欢我们的博客,请在Facebook上与您的朋友分享。您也可以在Twitter和Facebook上关注我们。

image 48

我们很高兴收到您的来信,请让我们知道我们如何改进,补充或创新我们的工作,并为您做得更好。写信给我们[email protected]