【问题标题】:Add sheet with successive number VBA添加具有连续编号VBA的工作表
【发布时间】:2017-02-21 20:34:01
【问题描述】:

我有一个简单的宏,可以将工作表添加到工作簿中。但是,有时我必须删除一些工作表。当我删除工作表并再次使用宏时,新添加的工作表会采用后面的数字,就好像删除的工作表仍然存在一样。我希望宏添加一个带有下一个数字的工作表。例如我有:

Sheet1 Sheet2 Sheet3

然后我删除 Sheet3 并想添加另一个工作表,这完全是 Sheet3 而不是 Sheet4

With ThisWorkbook

    .Sheets.add After:=.Sheets(.Sheets.Count)

End With

我该怎么做?

【问题讨论】:

  • 在我的脑海中,您需要遍历现有工作表以检查其名称,在迭代中找到丢失的工作表,并将新名称设置为该丢失的工作表。然后像往常一样使用“Name:=SheetName”添加工作表。

标签: vba excel


【解决方案1】:

在工作簿中添加此代码:

Option Explicit

Private Sub Workbook_NewSheet(ByVal Sh As Object)

    On Error GoTo Workbook_NewSheet_Error

    Sh.Name = "Sheet" & Sheets.Count

    On Error GoTo 0
    Exit Sub

Workbook_NewSheet_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Workbook_NewSheet of VBA Document DieseArbeitsmappe"

End Sub

差不多,如果您有以下工作表Sheet1Sheet2Sheet4,然后添加一个新工作表,您会收到错误,因为工作表的名称已被占用 (Sheet4)。这就是我添加错误处理程序的原因。

【讨论】:

  • 如果删除的工作表是迭代中的最后一张,这只会填补空白。如果“Sheet3”被删除并且现在有 5 张工作表,它将添加“Sheet5”而不是“Sheet3”。
  • @BrandonBarney - 是的,它会这样做。但我知道这是 OP 所要求的。
  • 可能是这样,我肯定会弄错。我以为他只是想使用下一个可用的数字,并假设这不会总是在计数的末尾。
  • @Vityata 谢谢。这行得通。但是我没有提到我在 Sheet1 之前还有另外两张纸。所以我需要宏从 Sheet1 开始并连续地继续。我的错误 - 抱歉
  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 2022-06-28
  • 1970-01-01
  • 2019-05-17
相关资源
最近更新 更多