2017-02-21 53 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

可能是這種情況,我當然可能會誤解。我以爲他只是想用下一個可用的號碼,並假定這不會總是在計數結束。 –