gpt4 book ai didi

VBA - 有/结束仅添加 2 张

转载 作者:行者123 更新时间:2023-12-04 21:53:33 26 4
gpt4 key购买 nike

我写了以下代码:

Sub CreateSheet()
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ClientList"
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ProviderList"
End With
End Sub

我的问题如下:在代码创建了两张表之后,我希望它停止并且即使我再次运行它也不会创建其他表。我想添加 2 并且只有 2 张!
它现在所做的是创建这两个工作表,如果我再次运行它,它将尝试创建其他工作表,并且我收到错误消息“名称已被占用。尝试不同的。”
请你帮助我好吗?

最佳答案

您可以将所有工作表名称保存在一个数组中 SheetNamesArr ,然后检查是否在包含所有工作表名称的数组中找到工作表名称,例如“ClientList”。

您可以使用 Application.Match 检查数组中是否已经存在“ClientList”。功能:

If IsError(Application.Match("ClientList", SheetNamesArr, 0)) Then

如果 IsError将导致 True这意味着此工作表尚不存在,您可以安全地添加它,否则什么也不做。

代码
Option Explicit

Sub CreateSheet()

Dim i As Long
Dim SheetNamesArr() As String

ReDim SheetNamesArr(100) ' redim to large size, will optimize size later

For i = 1 To ThisWorkbook.Sheets.Count
SheetNamesArr(i - 1) = ThisWorkbook.Sheets(i).Name
Next i
ReDim Preserve SheetNamesArr(0 To i - 2) ' resize to size of populated sheet names

With ThisWorkbook
' using Match, means if IsError sheet name not found in current array of sheet names >> you can add it
If IsError(Application.Match("ClientList", SheetNamesArr, 0)) Then
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ClientList"
End If
' same as previous Match
If IsError(Application.Match("ProviderList", SheetNamesArr, 0)) Then
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ProviderList"
End If
End With

End Sub

关于VBA - 有/结束仅添加 2 张,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49528224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com