【Excel VBA】シートの基本操作【追加、コピー、削除 etc.】

目次

シートの追加

最もシンプルなシートの追加方法

単純に Excel ファイルにシートを追加する構文は以下です。

シートの追加
  • <Workbook>.Sheets.Add

上記構文で、指定した Excel ファイルにシートが一つ追加されます。シートの追加位置としては、現在アクティブなシートの前に追加されます。

以下のマクロを実行してみます。

Sub test()
    ThisWorkbook.Sheets.Add
End Sub

マクロ実行前のシート構成は以下の通りとします。

マクロ実行後のシート構成は以下のようになり、Sheet8 が追加されたシートです。

追加されるシートの名前は「Sheet<数字>」になります。

指定した位置にシートを追加する

指定した位置にシートを追加する構文は以下です。

指定した位置にシートを追加
  • 指定シートの後にシートを追加
    • <Workbook>.Sheets.Add after:=<指定シート>
  • 指定シートの前にシートを追加
    • <Workbook>.Sheets.Add before:=<指定シート>

以下のマクロは、Sheet2 シートの後にシートを追加します。

Sub test()
    ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets("Sheet2")
End Sub

マクロ実行前のシート構成は以下の通りとします。

マクロ実行後のシート構成は以下のようになり、Sheet11 が追加されたシートです。

シートのコピー

シートをコピーする構文は以下です。

シートのコピー
  • 指定シートの後にシートをコピー
    • <Workbook>.<コピー元シート>.Copy after:=<指定シート>
  • 指定シートの前にシートをコピー
    • <Workbook>.<コピー元シート>.Copy before:=<指定シート>

以下のマクロは、Sheet2 シートを Sheet3 シートの後にコピーします。

Sub test()
    ThisWorkbook.Sheets("Sheet2").Copy after:=ThisWorkbook.Sheets("Sheet3")
End Sub

マクロ実行前のシート構成は以下の通りとします。

マクロ実行後のシート構成は以下のようになり、Sheet2(2) がコピーされたシートです。

シートの追加・コピー時の位置指定のテクニック

シートの追加やコピーを行う際に、シートの中の先頭または最後の位置にシートを追加したいということが良くあります。

このような場合の位置指定のテクニックについて記載します。

シートの中の先頭に追加したい場合

シートの指定方法として、Sheets(1) と指定することで先頭のシートを指定することができます。これを利用して、以下の構文でシートの中の先頭にシートを追加・コピーすることができます。

先頭の位置にシートを追加
  • <Workbook>.Sheets.Add before:=<Workbook>.Sheets(1)
先頭の位置に指定したシートをコピー
  • <Workbook>.<コピー元シート>.Copy before:=<Workbook>.Sheets(1)

マクロ例:

Sub test()
    ThisWorkbook.Sheets("Sheet2").Copy before:=ThisWorkbook.Sheets(1)
End Sub

シートの中の末尾に追加したい場合

シートの指定方法として、Sheets(Sheets.Count) と指定することで末尾のシートを指定することができます。これを利用して、以下の構文でシートの中の末尾にシートを追加・コピーすることができます。

末尾の位置にシートを追加
  • <Workbook>.Sheets.Add after:=<Workbook>.Sheets(Sheets.Count)
末尾の位置に指定したシートをコピー
  • <Workbook>.<コピー元シート>.Copy after:=<Workbook>.Sheets(Sheets.Count)

マクロ例:

Sub test()
    ThisWorkbook.Sheets("Sheet2").Copy after:=ThisWorkbook.Sheets(Sheets.Count)
End Sub

追加されたシートは ActiveSheet として操作可能

新規追加されたシートは、シート追加直後はアクティブなシートになっています。

このため、以下のマクロのように、ActiveSheet をシート型の変数に格納することで、変数を介して追加したシートを操作することができます。

Sub test()
    Dim mysheet As Worksheet
   
    ThisWorkbook.Sheets.Add
    Set mysheet = ThisWorkbook.ActiveSheet
    mysheet.Name = "追加したシート"
End Sub

シートの削除

シートを削除する構文は以下です。

シートの追加
  • <Workbook>.<対象シート>.Delete

以下のマクロは Sheet2 (2) シートを削除するマクロです。

Sub test()
    ThisWorkbook.Sheets("Sheet2 (2)").Delete
End Sub

このマクロを実行するとシートを削除できますが、シート削除時に以下のような確認メッセージが表示されて、処理が停止してしまいます。

この確認メッセージを表示させずにシートを削除するためには、以下のようにシート削除処理の前後に処理を追加します。

Sub test()
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("Sheet2 (2)").Delete
    Application.DisplayAlerts = True
End Sub
確認メッセージの非表示化・表示化
  • Application.DisplayAlerts = False
    • 以後、確認メッセージを表示させなくする
  • Application.DisplayAlerts = True
    • 以後、確認メッセージを表示させるようにする

これで確認メッセージを表示させずにシートを削除できます。


あわせて読みたい
Excel VBA マクロ作成用情報まとめ 【初学者向け情報】 【Excel VBA】初心者からマクロを作成できるようになるまでの学習ロードマップ 【Excel VBA マクロ独学者・初心者向け】VBA 学習の第一歩【このペー...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

とあるエンジニアです。

当ブログでは Excel VBA のマクロ作成に役立つ情報を中心に情報展開しています。

Excel VBA マクロを使いこなして時短し、人生の質『QOL』を高めていきましょう。

プロフ画像:Copyright (C) SQUARE ENIX CO., LTD. All Rights Reserved.

目次