【Excel VBA】シートの追加・削除・コピー・名前の変更

Excel マクロ(VBA)

今回はExcelのVBAでシートの追加・削除・コピー・名前の変更をする方法について解説します。

スポンサーリンク

SheetsコレクションとWorksheetsコレクション

VBAによるシートの作業は、Sheetsコレクション及びWorksheetsコレクションに、それぞれのメソッドまたはプロパティを組み合わせて実行できます。SheetsとWorksheetsの違いは以下の記事を参照ください。

オブジェクト・コレクションとは何か

オブジェクト(Object)というのはVBAの操作対象です。それは例えばExcelというアプリケーションであり、特定のブック(ファイル)であり、シートであり、その中の範囲です。オブジェクトには以下のようなものがあります。また、1つの種類のオブジェクトの集合のことをコレクション(Collection)と呼びます。Worksheetがオブジェクトで、Worksheetsがコレクションです。

オブジェクト・コレクションをオブジェクト型の変数を使うときには”Set”をつける必要があります。整数型や文字列の変数の時には不要な作業なので、オブジェクト型の変数を扱うときには注意してください。例えばwsというワークシート型の変数を用意し、そこに今実行しているファイルのアクティブシートを格納する場合には、以下のように記述します。

Dim ws As Worksheet

Set ws = ThisWorkbook.ActiveSheet

メソッドとは何か

メソッド(Method)は英語の意味としては”方法”という意味ですが、VBAではオブジェクト(セル・行・列・シート等)に対する”命令”という意味です。VBAでよく出てくる命令の例としては、”追加せよ”、”削除せよ”、”コピーせよ”、”保存せよ”などがあります。

プロパティとは何か

プロパティ(Property)は日本語では”属性”と訳されます。属性というのは、共通して備わっている特徴のことです。人間は共通して”目”を持っていて、鯨は共通してヒレを持っています。人間の属性の一つが”目”であり、鯨の属性の一つが”ヒレ”です。人間の属性には他にも”髪”、”腕”、”脊椎”、”肺”などがあります。

同様に、Excelにも属性があります。例えばセルの属性であればセルの値、数式、フォント、フォントの色、塗りつぶしの色、罫線の有無、セルの幅、セルの高さなどが挙げられます。他にもフィルター、ピボットテーブル、シートや範囲の名前などもプロパティです。これらのExcelのセルの属性を指定してあげるコードを書くことで、様々な操作が可能になります。

スポンサーリンク

シートの操作

今回の記事ではSheetsとそれぞれのメソッドの組み合わせでシートを操作する方法を説明します。

シートの追加

シートの追加はAddメソッドを使います。例えば以下のようにSheet1”しかシートが存在しない状態で、一番左端にシートを追加してみます。

コードは以下のどちらかで実行可能です。

Sheets.Add before:=Sheets(1)

Sheets.Add before:=Sheets(”Sheet1”)

シートを追加するときは”Before“と”After”の引数を使うことで、追加する場所を指定することができます。シートを追加する場所は、シート名か、シートの位置で指定することができます。Sheet(1)というのは一番左のシートです。Beforeは左に追加、Afterは右側に追加です。Before:=Sheet(1)は、今一番左のシートの左側に、という場所の指定になっています。

実行結果はどちらのコードでも以下のようになります。一番左に”Sheet2”が追加されました。

シートの削除

シートの追加はDeleteメソッドを使います。シートを削除するときは、シートの追加同様、シート名かシートの位置で指定することができます。上で追加した”Sheet2”を削除するためのコードを2種類掲載します。

Application.DisplayAlerts = False

Sheets(”Sheet2”).Delete

Application.DisplayAlerts = True

Application.DisplayAlerts = False

Sheets(1).Delete

Application.DisplayAlerts = True

実行結果はどちらのコードでも以下の通り、Sheet2が削除されました。

Application.Display.Alert

なおDeleteメソッドの前後は警告が出ないようにする措置です。単に”Sheets(1).Delete”のように記述すると、マニュアルでシートの削除を実行するときと同様、以下のような警告ウィンドウが出現します。ここで処理が止まらないように、警告を一時的に出ないようにしています。

シートのコピー

シートのコピーはCopyメソッドを使います。コピー元とコピー先は、シートの追加同様、シート名かシートの位置で指定することができます。上で追加した”Sheet2”を一番左にコピーするためのコードを2種類掲載します。

Sheets(“Sheet2”).Copy before:=Sheets(“Sheet2”)

Sheets(1).Copy before:=Sheets(1)

実行結果はどちらのコードでも以下の通り、Sheet2(2)が一番左に追加されました。

シート名の変更

シート名の変更はNameプロパティを使います。コピー元のシートは、シートの追加同様、シート名かシートの位置で指定することができます。上で追加した”Sheet2(2)”の名前を”テスト”に変更するためのコードを2種類掲載します。

Sheets(“Sheet2”).Name = “テスト”

Sheets(1).Name = “テスト”

実行結果はどちらのコードでも以下の通り、一番左のシート名が変更されました。

実演

以上で出てきたコードを組み合わせて、以下の作業を効率化してみましょう。

  • 一番左にシート追加
  • そのシートをコピーして一番左に追加
  • 一番左のシートの名前を”シート1″に変更
  • 左から二番目のシートの名前を”シート2″に変更

Sheets.Add before:=Sheets(1)

Sheets(1).Copy before:=Sheets(1)

Sheets(1).Name = “シート1”

Sheets(2).Name = “シート2”

実行結果は以下の通りです。

コメント

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