【Excel VBA入門】ワークシートの操作方法|指定・追加・削除・コピーなどを解説

操作編

エクセルを操作するうえで複数のワークシートを操作することもあると思います。
ワークシートの追加、削除、コピー、移動などVBAをつかったワークシートの操作方法についてご説明をします。

スポンサーリンク

シートの参照

シートを参照する方法にもいくつかの種類がありますので、具体例をつかって確認をしておきましょう。

シート番号で参照する

ここでは「シート番号」としてご紹介をしていますが、正式には「インデックス番号」とよばれています。

左から数えて何番目のワークシートか」といったことを表す番号です。

たとえば、こちらの場合はつぎのような考え方になります。

シート番号シート名
1Sheet1
2Sheet2
3Sheet3
4Sheet4

それでは具体的にみていきましょう。

「左から2番目」のワークシートを選択したいとき

このようなコードを書きます。

Sub sheet_no_select()
    Worksheets(2).Select
End Sub

こちらが実行結果です。
左から2番目の「Sheet2」が選択されていますね。

シート名で参照する

シート名「Sheet3」を選択したいとき

このようなコードを書きます。

Sub sheet_name_select()
    Worksheets("Sheet3").Select
End Sub

実行結果はこちらです。
シート名「Sheet3」が選択されています。

シートの追加|Add

シートを追加したいとき

このようなコードを記述します。

Sub sheet_add()
    Worksheets.Add
End Sub

こちらが実行結果です。

ちなみにこちらは、「Sheet3」を選択した状態でマクロを実行した結果です。

シートの追加場所を指定したいときは引数をつかいます。

メソッド名引数
AddAfter
AddBefore
AddCount

たとえば、このようにコードを書きます。
「Sheet4」のうしろにシートを追加します。

Sub sheet_add_af()
    Worksheets.Add after:=Worksheets("Sheet4")
End Sub

実行結果はこちら。
先ほどとはちがう場所にシートが追加されていることが確認できます。

ちなみに、「追加するシート数を指定」することもできます。

Sub sheet_add_cou()
    Worksheets.Add Count:=3
End Sub

実行前はこちら。

実行後がこちら。

シートが3つ追加されていることが確認できます。

シート名の変更|Name

シート名「Sheet5」を「シート集計」に変更したいとき

Sub sheet_chang_name()
    Worksheets("Sheet5").Name = "シート集計"
End Sub

こちらが実行前です。

こちらが実行後です。

シートの削除|Delete

シート名「シート集計」を削除したいとき

Sub sheet_delete()
    Worksheets("シート集計").Delete
End Sub

こちらが実行前です。

こちらが実行後です。

指定したシート名「シート集計」が削除されています。

データが入力されている状態のワークシートを削除をしようとすると、以下のようにエクセルの確認が入ります。

マクロ実行中にこのような確認でプログラムが中断されないように、あらかじめ設定することでメッセージを非表示にすることができます。

「Application.DisplayAlerts = False」と記述することによって、確認メッセージの機能を「オフ」にすることができます。
コードを記述するときには、以下のようにエクセルの確認を「非表示」にしたいコードをはさむようにして使います。

Application.DisplayAlerts = False

    (ここにコードを記述します。)

Application.DisplayAlerts = True

確認メッセージを「非表示」にしたいコードあとには、「Application.DisplayAlerts = True」と記述して、確認メッセージの機能を「オン」に戻しておきましょう。

思わぬ動作につながらないように、Application.DisplayAlerts の「False」と「True」はセットでつかって確認をしましょう!

シートのコピー|Copy

シート名「Sheet4」をコピーしたいとき

Sub sheet_copy_af()
    Worksheets("Sheet4").Copy after:=Worksheets("Sheet4")
End Sub

こちらが実行前です。

実行後がこちらです。

シートの追加場所を指定したいときは引数をつかいます。
BeforeとAfterを同時に指定することはできません。

メソッド名引数内容
CopyAfter指定したワークシートのうしろにコピーされる
CopyBefore指定したワークシートのまえにコピーされる
Copyなし新規のエクセルでワークシートが作成される

 

引数を省略した場合は、新しいワークブックが作成されます。

新しいExcelを開いてこちらのコードを実行します。

Sub sheet_copy()
    Worksheets("Sheet1").Copy
End Sub

実行前がこちら。

実行後がこちら。

新しいExcelが開かれました。ファイル名が変わっていることが確認できますでしょうか。

シートの移動|Move

シート名「Sheet2」を移動させたいとき

Sub sheet_move()
    Worksheets("Sheet2").Move before:=Worksheets("Sheet1")
End Sub

こちらが実行結果です。
「Sheet2」が「Sheet1」のまえに移動されていることが確認できます。

ワークシートの移動先は、引数をつかって指定します。

メソッド名引数内容
MoveBefore指定したワークシートのまえに移動します。
MoveAfter指定したワークシートのうしろに移動します。

まとめ

シート操作についてよく使うものをまとめてご紹介しました。

セルの操作ほど使用頻度は高くないかと思いますが、ここでご紹介した基本的な使い方は理解しておいてください。

とは言えいまは、コードの書き方ではなく「マクロでもできるんだな」程度の覚え方で大丈夫です。
あとで見返せばなんとでもなります。

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