excel - 如果工作表不存在,如何创建工作表?

标签 excel vba

我正在使用以下代码在工作簿中检查 sheet1sheet2存在与否。如果它们不存在,那么它们应该被生成。否则,什么都不应该发生。

我的问题是宏仅在两个工作表都不存在时才适用于第一次迭代。创建工作表后,我收到错误消息。诸如“名称已经存在。选择一个不同的……”之类的东西。如果sheet1,我不希望发生任何事情和 sheet2已经存在。

Sub Worksheet()

    Dim x As Integer, blnFound1 As Boolean, blnFound2 As Boolean
    blnFound1 = False
    blnFound2 = False

    With ThisWorkbook

        For x = 1 To .Sheets.Count

            If .Sheets(x).Name = "Sheet1" Then
                blnFound1 = True
                Exit For
            End If

            If .Sheets(x).Name = "Sheet2" Then
                blnFound2 = True
                Exit For
            End If

        Next x

        If blnFound1 = False Then
            .Sheets.Add
            With ActiveSheet
                .Name = "Sheet1"
            End With
        End If

        If blnFound2 = False Then
            .Sheets.Add
            With ActiveSheet
                .Name = "Sheet2"
            End With
        End If

    End With

End Sub

最佳答案

我在每个项目上都使用不同的宏来处理这个问题,因此您可以随时使用它:

Sub TestSheet(SheetName As String)

    Dim Exists As Boolean

    With ThisWorkbook
        On Error Resume Next
        Exists = (.Worksheets(SheetName).Name <> "")
        On Error GoTo 0
        If Not Exists Then
            .Sheets.Add After:=.Sheets(.Sheets.Count)
            .Sheets(.Sheets.Count).Name = SheetName
        End If
    End With

End Sub

这是您的测试方式:
Sub Test()

    TestSheet "Sheet1"
    TestSheet "Sheet2"

End Sub

关于excel - 如果工作表不存在,如何创建工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688434/

相关文章:

excel - MS Excel等数据分析工具

java - xssf 如何以字符串形式获取任何内容

excel - 整数的 ByRef 参数类型不匹配

excel - 如何在 Excel VBA 中比较单元格位置?

vba - 暂停 VBA 循环以允许编辑工作表(无论有或没有用户窗体)

Excel VBA - 仅在 with 语句之后结束的 while 语句

excel - 使用 VBA 对第二个工作簿的宏进行密码保护

vba - 为什么CLng会产生不同的结果?

vba - 如何使用工作表函数过滤数组?

POI 中的 Java Excel/POJO 映射