gpt4 book ai didi

excel - 添加具有连续名称的工作表

转载 作者:行者123 更新时间:2023-12-04 21:48:37 24 4
gpt4 key购买 nike

我需要编写一个在执行时添加新工作表的宏。工作表名称将是“Combined-n”,其中 n 是整数。我希望它尝试添加一个名为“Combined-1”的新工作表。但是,如果工作表“Combined-1”已经存在(因为这个宏可以执行多次),我希望它添加一个名为“Combined-2”的工作表,依此类推。我尝试了一些不同的东西,包括下面的代码,但是当我执行它时没有任何 react 。

Dim i As Integer
Dim WS As Worksheet

For Each WS In ThisWorkbook.Worksheets
WS.Activate
For i = 1 To Worksheets.Count
If WS.Name = "Combined-" & i Then
Sheets.Add(Before:=Sheets("Sheet1")).Name = "Combined-" & i + 1
End If
Next i
Next WS

我也试过:
Dim i As Integer

For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Combined-" & i Then
Sheets.Add(Before:=Sheets("Sheet1")).Name = "Combined-" & i + 1
End If
Next i

最佳答案

编写一个函数,其唯一工作是返回下一个“Combined-N”工作表的名称。我会通过计算名称以“Combined-”开头的工作表数量,然后在该数字上加 1,然后递增直到与该数字连接的“Combined-”是一个不包含的工作表名称已经存在。

所以,我有一个 GetNextCombinedSheetName执行此操作的函数,以及 SheetNameExists确定给定工作表名称是否存在于可选指定的 Workbook 中的函数的Worksheets收藏。

像这样的东西:

Public Function GetNextCombinedSheetName() As String
Const namePrefix As String = "Combined-"

Dim currentcount As Long

Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If Left(ws.Name, Len(namePrefix)) = namePrefix Then
currentCount = currentCount + 1
End If
Next

Dim nextName As String
Do 'ensure the name doesn't already exist - increment if it does:
nextName = namePrefix & currentCount + 1
Loop While SheetNameExists(nextName)

GetNextCombinedSheetName = nextName
End Function

Private Function SheetNameExists(ByVal sheetName As String, Optional ByVal wb As Workbook = Nothing) As Boolean
If wb Is Nothing Then Set wb = ThisWorkbook
Dim ws As Worksheet
On Error Resume Next ' swallow index out of bounds error 9
Set ws = wb.Worksheets(sheetName)
On Error GoTo 0
SheetNameExists = Not ws Is Nothing
End Function

有了它,您可以添加一个新工作表并将其命名为:
Dim newSheet As Worksheet
Set newSheet = ThisWorkbook.Worksheets.Add
newSheet.Name = GetNextCombinedSheetName

注意每个 Worksheets成员调用(或 Sheets - 但为什么您使用这两者可互换且不一致?)正确限定为 Workbook对象:您的代码似乎有几个 implicit ActiveWorkbook references , 这仅适用于 ActiveWorkbook恰好是主机 ThisWorkbook文档 - 可能并非总是如此(特别是当您学会停止 ActivateSelect 的事情时),并且您不希望您的代码假设它是:当我们系统地进行时,生活会简单得多限定工作簿和工作表成员调用。

关于excel - 添加具有连续名称的工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59182455/

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