gpt4 book ai didi

excel - 事件工作表名称按顺序更改

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

我有一个工作簿,其中包含两个名为“WT-1”和“CL-1”的电子表格(可能更多的是不同的名称)。
当即“WT-1”处于事件状态时,我希望能够(通过使用分配有宏的按钮)复制此当前(事件)电子表格并按顺序重命名,如 WT-2、WT-3、WT -4 等

我想更改只需要应用于名称包含“WT-”的电子表格,因为名称更改应该只针对新工作表。不应触及所有其他现有工作表。在这里 - 请帮助 :) 它更改了一个新电子表格的名称。如果我的工作簿中不止 1 个工作表,则它不起作用。

Sub changeWSname()

Dim ws As Worksheet
Dim shtName As Variant
Dim Rng As Range
Dim i As Long

With Sheets("wslist")
Set Rng = .Range("A1", .Range("A" & .Rows.Count).End(xlUp).Address)
shtName = Application.Transpose(Rng)
i = LBound(shtName)
End With

For Each ws In ActiveWorkbook.Worksheets
If Left(Trim(ws.Name), 3) = "WT-" Then
ws.Name = shtName(i)
i = i + 1
End If
Next ws
End Sub

宏假设只是更改新复制的电子表格的名称。因此,如果我复制 WT-2 并创建名为 WT-2(2) 的新工作表并运行宏 - 它将起作用并将新工作表名称更改为 WT-1(是“wslist”范围内的名字)。这似乎没问题。但是,如果我的工作簿中有任何其他电子表格(事件工作表和已复制的新工作表除外)它不起作用并给我一个错误 1004 -“无法将工作表重命名为与另一个工作表相同的名称,引用的对象库或 Visual Basic 引用的工作簿”
当我单击 de-bag 时,我发现它突出显示:ws.Name = shtName(i)

最佳答案

问题是您是否遇到以下表格的情况

  • WT-1
  • WT-1 (2)
  • WT-2

  • 您的代码尝试重命名 WT-1 (2)进入 WT-2但这已经存在。

    因此,您可能需要先将它们重命名为其他名称,例如
  • WT-1
  • #WT-2
  • #WT-3

  • 然后删除 #在另一个循环中。

    这样可以防止重命名为已经存在的名称。
    Option Explicit

    Public Sub changeWSname()
    Dim ws As Worksheet
    Dim shtName As Variant
    Dim Rng As Range
    Dim i As Long

    With Sheets("wslist")
    Set Rng = .Range("A1", .Range("A" & .Rows.Count).End(xlUp).Address)
    shtName = Application.Transpose(Rng)
    i = LBound(shtName)
    End With
    For Each ws In ActiveWorkbook.Worksheets
    If Left$(Trim(ws.Name), 3) = "WT-" Then
    'test if we run out of sheet names
    If i > UBound(shtName) Then
    MsgBox "Running out of sheet names … aborting"
    Exit Sub
    End If

    ws.Name = "#" & shtName(i) 'add a # to all new sheet names
    i = i + 1
    End If
    Next ws

    'remove the # from the sheet nam
    For Each ws In ActiveWorkbook.Worksheets
    If Left$(Trim(ws.Name), 1) = "#" Then
    ws.Name = Right$(ws.Name, Len(ws.Name) - 1)
    End If
    Next ws
    End Sub

    正如 QHarr 指出的那样,测试您是否用完工作表名称可能是一个好主意。

    关于excel - 事件工作表名称按顺序更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49190023/

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