如何使用vba检查工作表是否存在?

如果要创建、删除、移动或复制一张工作表,您需要知道该工作表是否存在。

要编写代码来检查工作表是否存在,您需要一个循环来遍历工作簿中的每个工作表并匹配您提供的名称。但事情是这样的,您可以为此使用两个不同的循环( For Next 和 For Each ),今天我们将使用这两个循环。

在本教程中,我们将了解执行此操作的不同方法。因此,请确保功能区上有“开发人员”选项卡并打开VBA 编辑器来编写此代码。

检查当前工作簿中是否存在工作表

通过此循环,您可以引用工作簿中的所有工作表,并逐一循环遍历它们,以将工作表名称与要搜索的工作表名称相匹配。

按着这些次序:

  1. 首先,声明一个变量以在运行循环时用于工作表并存储要搜索的工作表的名称。
    declare-a-variable-to-use-for-the-sheet
  2. 接下来,为输入框编写一行代码,用于输入要搜索的工作表的名称。
    line-of-code-for-an-input-box
  3. 之后,使用 For Each 关键字开始循环。并使用变量来引用工作簿中的每个工作表。
    start-your-loop
  4. 从这里开始,您需要编写一个IF THEN ELSE语句来将工作表名称与您在输入框中输入的名称进行匹配,如果找到匹配,则显示一个消息框并退出该过程。
    write-an-if-then-else
  5. 最后,如果没有找到匹配项,则会出现一个消息框,通知您。
    message-box-to-show

有用的链接:运行宏宏记录器Visual Basic 编辑器个人宏手册

完整代码:

 Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For Each sht In ThisWorkbook.Worksheets If sht.Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next sht MsgBox "No! " & shtName & "is not there in the workbook." End Sub

让我解释一下它是如何工作的:当您运行此代码时,会出现一条消息,您需要在其中输入要搜索的工作表的名称。

之后,它会遍历每张工作表,将名称与您输入的名称进行匹配,如果名称与工作表匹配,它会向您显示一条消息,如果不匹配,则会显示另一条消息。

这是另一个检查工作表是否存在的代码。

 Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String Dim i As Long i = Sheets.Count shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For i = 1 To i If Sheets(i).Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next i MsgBox "No! " & shtName & " is not there in the workbook." End Sub

此代码使用 FOR NEXT 循环并使用工作簿中的工作表总数,并在此基础上循环遍历名称与您输入的名称相匹配的每个工作表。

检查关闭的工作簿中是否存在工作表

在以下代码中,您有一个循环在关闭的工作簿中搜索工作表名称。为了引用该文件,我们使用了文件地址。

 Sub vba_check_sheet() Dim wb As Workbook Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") Application.ScreenUpdating = False Set wb = Workbooks.Open _ ("C:UsersDellDesktopsample-file.xlsx") For Each sht In wb.Worksheets If sht.Name = shtName Then wb.Close SaveChanges:=True MsgBox "Yes! " & shtName & " is there in the workbook." _ , vbInformation, "Found" Exit Sub End If Next sht Application.ScreenUpdating = False MsgBox "No! " & shtName _ & " is not there in the workbook.", _ vbCritical, "Not Found" End Sub

当您运行此宏时,当您禁用屏幕更新时,它会打开后面的文件,一旦它遍历所有工作表,您就拥有启用屏幕更新的代码。 ‘屏幕。

注意:正如您所看到的,在文件位置地址中我们有文件扩展名,这意味着您需要有正确的文件扩展名才能引用它。

添加评论

您的邮箱地址不会被公开。 必填项已用 * 标注