【VBA】ワークシートの追加と削除

 今回は VBA を使って ワークシートを追加 または ワークシートを削除 する方法を解説します。

【VBA】Add でワークシートを追加します

 Worksheets コレクションに対して Add メソッドを呼び出せば、新しいシートが追加されます。まずは一番シンプルなプロシージャを書いてみます。

'[VBA] 新しいシートを追加するマクロ
Sub Add_Sheet_1()
  Worksheets.Add.Name = "NewSheet"
End Sub

 Add_Sheet_1() を実行すると NewSheet という名前の付いたシートが追加されます。このマクロでは挿入位置を何も指定していないので、今開いているシート(アクティブシート)の後ろに追加されますが、位置を指定したい場合は、Before もしくは After 引数を指定します。たとえば、次のプロシージャは Sheet1 の前に新しいシートを追加します。

'[VBA] Sheet1の前に新しいシートを追加するマクロ
Sub Add_Sheet_2()
  Worksheets.Add(Before:=Worksheets("Sheet1")).Name = "NewSheet"
End Sub

 Sheet1 の後ろに新しいシートが追加したい場合は以下のように記述します。

'[VBA] Sheet1の後に新しいシートを追加するマクロ
Sub Add_Sheet_3()
  Worksheets.Add(After:=Worksheets("Sheet1")).Name = "NewSheet"
End Sub

 複数のシートをまとめて追加したいときは Count 引数を指定します。たとえば、Sheet1 の前に 2 枚のシートが追加するには次のようなコードを書きます。

'[VBA] Sheet1の前に2枚のシートを追加するマクロ
Sub Add_Sheet_4()
  Worksheets.Add Before:=Worksheets("Sheet1"), Count:=2
End Sub

【VBA】Delete でワークシートを削除します

 VBA でワークシートを削除するときは ワークシートオブジェクトに対して Delete メソッドを呼び出します。特に何も指定しないと、手動でシートを消すときと同じように「シートを削除すると元に戻せません」みたいな警告メッセージが表示されます。それが煩わしい場合は、DisplayAlerts を False にしておきましょう。

'[VBA] Sheet1を警告メッセージなしで削除するマクロ

Sub Delete_Sheet()

  '警告メッセージをオフにします
  Application.DisplayAlerts = False

  Worksheets("Sheet1").Delete

End Sub

 Delete_Sheet() を実行すると警告なしで Sheet1 が消えます。でもワンクリックでぱっと消えちゃうようなマクロだと「ぎゃああ! 間違えましたよー! このシートは消しちゃいかんやつですよー!」みたいなことになってしまうかもしれないので、ユーザーさんに本当に消すのかどうか確認するメッセージを出すようにしておいたほうがいいかもしれません。

コメント

  1. あとりえこばと より:

    【AI解説】Worksheets.Add

    [ChatGPT] VBA(Visual Basic for Applications)のWorksheets.Addは、ExcelのVBAプログラミングで使用されるメソッドです。このメソッドは、新しいワークシートを作成してExcelブックに追加するために使用されます。以下に、Worksheets.Addメソッドの基本的な構文と使用方法を示します。

    Worksheets.Add([Before], [After], [Count], [Type])

    このメソッドは、オプションの引数を含んでいます。引数の意味と使用方法は以下の通りです。
     
    ・Before: 新しいワークシートの前に挿入されるワークシートを指定します。省略可能です。
     
    ・After: 新しいワークシートの後に挿入されるワークシートを指定します。省略可能です。
     
    ・Count: 追加するワークシートの数を指定します。省略可能です。
     
    ・Type: 新しいワークシートの種類を指定します。省略可能です。
     
     BeforeとAfterの引数は、既存のワークシートを指定して新しいワークシートをその前または後ろに挿入するために使用します。たとえば、Worksheets.Add Before:=Worksheets(“Sheet2”)と指定すると、新しいワークシートが”Sheet2″の前に挿入されます。
     
     Count引数を使用すると、一度に複数のワークシートを追加できます。たとえば、Worksheets.Add Count:=3と指定すると、新しいワークシートが3つ追加されます。

     Type引数を使用すると、新しいワークシートの種類を指定できます。たとえば、Worksheets.Add Type:=xlWorksheetと指定すると、新しいワークシートは通常のワークシートとして作成されます。

  2. あとりえこばと より:

    【AI解説】Worksheets.Delete

    [ChatGPT] VBAのWorksheet.Deleteメソッドは、Excelのワークシートを削除するための機能です。このメソッドを使用すると、VBAコードからワークシートを削除したり、必要に応じて新しいワークシートを作成したりすることができます。Worksheet.Deleteメソッドの基本的な構文は以下の通りです:

    Worksheets("シート名").Delete
    

     ここで、「シート名」は削除したいワークシートの名前を指定します。このメソッドを使う際に注意するポイントはいくつかあります。
     
     ワークシートを削除すると、そのワークシートに含まれるデータや設定が完全に失われます。したがって、削除する前に必要なデータをバックアップするか、注意深く確認してください。
     
     削除するワークシートがアクティブな場合、削除操作を行う前に別のワークシートをアクティブにする必要があります。例えば、以下のようにアクティブなワークシートを変更することができます:

    Worksheets("別のシート名").Activate

    存在しないワークシートの名前を指定すると、エラーが発生します。削除する前に、指定した名前が正しいことを確認してください。ワークシートを削除する例を示します:

    Sub DeleteWorksheet()
        Dim ws As Worksheet
        Set ws = Worksheets("Sheet1")  '削除するワークシートを指定
        
        Application.DisplayAlerts = False  '確認ダイアログを非表示にする
        ws.Delete  'ワークシートを削除
        Application.DisplayAlerts = True  '元の設定に戻す
    End Sub

     この例では、「Sheet1」という名前のワークシートが削除されます。最初にApplication.DisplayAlertsをFalseに設定することで、確認ダイアログを表示せずに削除が行われます。上記のコードでは、ワークシートが実際に削除される前にデータをバックアップするか、注意してください。

タイトルとURLをコピーしました