2017-02-21 14 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枚ある場合、 "Sheet3"ではなく "Sheet5"が追加されます。 –

+0

@BrandonBarney - うん、それはまさにそうするでしょう。しかし、私はこれがOPが求めていることであると理解しました。 – Vityata

+1

それは事実かもしれないし、私は間違いが間違いである可能性があります。私は彼が単に次の利用可能な数字を使いたがっていると思っていましたが、これはいつもカウントの終わりにあるとは思われませんでした。 –

関連する問題