2017-02-21 29 views
1

我有一个简单的宏,它将工作表添加到工作簿中。但是,有时我必须删除一些工作表。当我删除工作表并再次使用宏时,新添加的工作表假设后面的编号,就好像删除的工作表仍然存在。我希望宏在下一个数字中添加一个表格。例如,我有:用连续数字VBA添加工作表

Sheet1 Sheet2 Sheet3 

然后我删除Sheet3并希望添加其他的片材,其完美的将是Sheet3而不是Sheet4

With ThisWorkbook 

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

End With 

我怎样才能做到这一点?

+0

关闭我的头顶,你需要遍历现有的工作表来检查他们的名字,在迭代中找到缺失的工作表,并将新的名称设置为缺少的工作表。然后用“Name:= SheetName”正常添加表格。 –

回答

2

工作簿中添加以下代码: enter image description here

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)。这就是为什么我添加了错误处理程序。

+0

如果删除的工作表是迭代中的最后一个,这只会填补空白。如果“Sheet3”被删除并且现在有5张,它将添加“Sheet5”而不是“Sheet3”。 –

+0

@BrandonBarney - 是的,它会这样做。但我明白,这是OP所要求的。 – Vityata

+1

可能是这种情况,我当然可能会误解。我以为他只是想用下一个可用的号码,并假定这不会总是在计数结束。 –