「VBAを使用して、シート名の変更や取得をするにはどうしたらいいのだろう....」
そんな疑問を持っていませんか?
・何枚ものシートを効率よく操作したい
・シートの名前を一括で取得して一覧にしたい
・シートの追加・削除をワンクリックでできるようにしたい
その場合は、VBAの「シート操作」を
使用すると解決します!
この記事では、Excel VBAでシートを操作するための基本的な方法を詳しく解説します。
シートをアクティブにする方法や名前の取得、シートの追加・削除まで、さまざまな方法を紹介します。
すべての例は、コピペして実行できるので、ぜひ最後までご覧ください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事でできるようになること
この記事を読むことで、以下のことができるようになります。
- VBAでシート操作を行えるとどのような事ができるのか?確認する
- VBAでシート操作のできることを習得する
- シート操作時の「Worksheets」と「Sheets」の違いを知る
- シート操作時の注意ポイントを確認する
- 具体的なシート操作の使用例を確認する
VBAでシート操作をマスターすると、どのような事ができるようになる?
Excel VBAを使ってシートを操作することで、以下のようなさまざまな作業を効率化できるようになります。
- シートの自動追加・削除
- ワークブック内のシート管理をワンクリックで操作 (追加・削除)することができます。
これにより、人が手動でシートを追加・削除する手間を大幅に削減することが可能です。
- ワークブック内のシート管理をワンクリックで操作 (追加・削除)することができます。
- シートの名前を取得・変更
- シート名を瞬時に一覧化したり、特定のルールに従って一括で名前を変更できます。
これにより、大量のシートを一括管理しやすくなり、作業効率を向上させます。
- シート名を瞬時に一覧化したり、特定のルールに従って一括で名前を変更できます。
- 特定のシートを自動で選択
- 目的のシートに自動で移動 (アクティブ)することもできます。
これにより、作業中に何度もシートを切り替える場合でも、スムーズに目的のシートへ移動できるため、効率的に作業を進められます。
- 目的のシートに自動で移動 (アクティブ)することもできます。
- シートをコピーや移動
- 既存のシートをテンプレートとして簡単に複製できます。
例えば、毎月の報告書や請求書を作成する場合、一度作成したシートをコピーして、新たにデータを入力するだけで済むようになります。
- 既存のシートをテンプレートとして簡単に複製できます。
これらのシート操作をマスターすることで、手動で行っていた繰り返し作業を自動化でき、作業効率が大幅に向上します。
VBAのSheetsオブジェクトのメソッドとプロパティ一覧をご紹介
以下の表は、VBAのSheetsオブジェクトで利用できる主なメソッドとプロパティをまとめたものです。
「Add」や「Name」以外にも、操作を効率化するために便利な機能が数多くあります。
メソッド/プロパティ | 機能の概要 | 使用例 |
---|---|---|
Activate | シートをアクティブにする。 | Sheets(1).Activate |
Add | 新しいシートを追加する。 | Sheets.Add |
Count | シートの総数を取得する。 | MsgBox Sheets.Count |
Copy | シートをコピーして新しいシートを作成する。 | Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) |
Delete | シートを削除する。 | Sheets("Sheet1").Delete |
Index | シートのインデックス番号を取得する。 | MsgBox Sheets("Sheet1").Index |
Move | シートの位置を移動する。 | Sheets("Sheet1").Move Before:=Sheets(1) |
Name | シートの名前を取得または変更する。 | Sheets(1).Name = "NewName" |
Select | シートを選択する。 | Sheets("Sheet1").Select |
Visible | シートの表示・非表示を設定する。 | Sheets("Sheet1").Visible = False |
「Worksheets」と「Sheets」の宣言の違いについて解説
Excel VBAでシート操作を行う際には、「Worksheets」や「Sheets」の2つのオブジェクトが使われます。
これらは、ワークブック(Excelファイル)内のシートを操作するためにとても便利なオブジェクトです。
一見似ているように見えますが、実は少し違いがあります。
以下に、それぞれの使い方と違いを初心者の方でもわかりやすく解説します。
WorksheetsとSheetsの違いって何?
VBAでシートを操作するとき、「Worksheets」オブジェクトはワークシートだけを対象に操作します。
しかし、「Worksheets」は長くて、毎回記述するのが少し大変ですよね。
そこで、「Sheets」と記述すると省略して書くことができます。
ただし、「Sheets」と「Worksheets」には対象とするシートに違いがあるため、操作の目的に合わせて使い分ける必要があります。
- Worksheets
- ワークシートだけを対象とするため、ワークシートだけを操作したいときに便利です。
- Sheets
- 省略して記述できるだけでなく、ワークブック内のすべてのシート(ワークシート、グラフシートなど)を対象にできるため、さまざまなシートを操作する場合に使えます。
次に、それぞれの使い方をコード例で見ていきましょう。
Worksheetsを使用してシート名を取得する
Worksheets
はワークシートのみを対象に操作する際に使用します。
実際にシート名を取得するコード例を見てみましょう。
コード例: 「Worksheets」を使用してシート名を取得する
Sub ListAllWorksheets()
Dim i As Long
'// Worksheetsのシート名をすべて取得
For i = 1 To Worksheets.Count
Cells(i, 1) = Worksheets(i).Name
Next i
End Sub
処理結果
このコードを実行すると、セル「A1」にワークシートの名前「Sheet1」「Sheet2」が表示されます。
ここで使っているWorksheets
はワークシートだけを対象にしているため、グラフシート「グラフ3」は含まれません。
Sheetsを使ってすべてのシート名を表示する
Sheets
を使うと、ワークシートだけでなく、グラフシートなどワークブック内のすべてのシートを対象に操作できます。
次のコードでは、「Sheets」を使ってシート名を取得します。
コード例: 「Sheets」を使用してシート名を取得する
Sub ListAllWorksheets_2()
Dim i As Long
'// Worksheetsのシート名をすべて取得
For i = 1 To Sheets.Count
Cells(i, 1) = Sheets(i).Name
Next i
End Sub
処理結果
このコードを実行すると、セル「A1」にすべてのシート名「Sheet1」「Sheet2」「グラフ3」が表示されます。
Sheets
はワークシートだけでなく、グラフシートも含むすべてのシートを対象にします。
「Worksheets」と「Sheets」の使い分け
- Worksheets
- ワークシートだけを操作したい場合に使用します。
グラフシートを含めたくないときに便利です。
- ワークシートだけを操作したい場合に使用します。
- Sheets
- ワークブック内のすべてのシート(ワークシート、グラフシートなど)を対象に操作したい場合に使用します。
操作の目的に応じて使い分けます。
例えば、ワークシートの一覧を取得したい場合はWorksheets
を、すべてのシートを対象に操作したい場合はSheets
を使うと便利です。
注意ポイント:VBAでシート操作を行う際の重要なポイント
VBAでシートの追加、削除、名前変更などの操作を行う際には、いくつかの注意点があります。
特に、エラーの発生を未然に防ぐためのポイントを押さえておくと、安全にVBAを活用できます。
ここでは、シート操作の失敗やトラブルを回避するためのポイントを解説します。
注意ポイント1: シートの存在確認
シートを操作する前に、対象のシートが存在するかどうかを確認することが重要です。
例えば、削除や名前変更を行う際に、指定したシートが存在しない場合、エラーが発生します。
以下のコード例を参考にして、シートの存在を確認してから操作を行うようにしましょう。
Sub RenameSheetSafely()
Dim ws As Worksheet
On Error Resume Next
Set ws = Sheets("OldSheetName")
On Error GoTo 0
If Not ws Is Nothing Then
ws.Name = "NewSheetName"
Else
MsgBox "指定したシートが存在しません。"
End If
End Sub
注意ポイント2: シート削除時の警告メッセージ
シートを削除する際、VBAは確認メッセージを表示します。
この確認メッセージを表示しないようにするためには、Application.DisplayAlertsプロパティを使用して警告メッセージを無効化しましょう
しかし、削除後は必ず元に戻すようにすることが必要です。
Sub DeleteSheetSafely()
Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True
End Sub
注意ポイント3: シートの追加位置を指定する
Sheets.Addメソッドでシートを追加する際、追加する位置を明確に指定することで、予期せぬ位置にシートが挿入されるのを防ぎます。
例えば、以下のように「Before引数」や「After引数」を使って、追加位置をコントロールしましょう。
⇒ 具体的な例は、「使用例:【 Add 】シートを追加する」を確認する。
Sub AddSheetAfterLast()
Sheets.Add After:=Sheets(Sheets.Count)
End Sub
注意ポイント4: シート名の一括変更や取得時のエラー回避
シート名を一括で変更する際、既存のシート名と重複しないように注意が必要です。
また、シート名を取得する際にエラーが発生する可能性があるため、エラーハンドリングを組み込むことをおすすめします。
Sub ChangeSheetNames()
Dim i As Long
For i = 1 To Sheets.Count
On Error Resume Next
Sheets(i).Name = "Sheet" & i
On Error GoTo 0
Next i
End Sub
注意ポイント5: インデックス番号の使用に注意
シートのインデックス番号は、シートの並び順に依存します。
シートの順序が変更されると、インデックス番号も変わってしまうため、特定のシートを操作する場合はシート名で指定するほうが確実です。
VBAでシートを操作する使用例をご紹介
ここからは、「シート操作方法」の具体的な使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。
【 使用例目次 】
- 【 Activate 】シートを選択する
- 【 Name 】シートの名前を取得する
- 【 Add 】シートを追加する
- 【 Delete 】シートを削除する
【 Activate 】シートを選択する
Activate
メソッドは、特定のシートを選択状態にするために使います。
シート名やインデックス番号で指定でき、柔軟なシート操作が可能です。
使用例1: シート名でシートをアクティブにする
VBAで特定のシートをアクティブにするには、Activate
メソッドを使います。
シート名を指定することで、シートの順序に関わらず、特定のシートを簡単に選択状態にできます。
コード例
Sub ActivateSheet()
Sheets("Sheet1").Activate
End Sub
処理結果
このコードを実行すると、「Sheet1」という名前のシートがアクティブになります。
シート名を指定することで、シートの順序が変更されても問題なく目的のシートを選択できるため、この方法は非常にシンプルで実用的です。
コードの動作概要
Sheets("Sheet1").Activate
で、シート名が「Sheet1」のシートを指定し、アクティブ(選択状態)にします。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ActivateSheetByName()
- この行では、新しいサブルーチン「ActivateSheetByName」を定義しています。
このサブルーチン内に、シートをアクティブにするための一連の処理を書きます。
- この行では、新しいサブルーチン「ActivateSheetByName」を定義しています。
- Sheets(“Sheet1”).Activate
- Sheets(“Sheet1”)
- Sheetsオブジェクトを使って、「Sheet1」という名前のシートを指定しています。
シートの順番に関わらず、名前で直接指定できるため、シートの順序が変わっても影響を受けません。
- Sheetsオブジェクトを使って、「Sheet1」という名前のシートを指定しています。
- .Activate
- 指定したシートをアクティブ(選択状態)にします。
このメソッドを使うことで、シートを画面上で選択し、そのシートに対する操作を行う準備が整います。
- 指定したシートをアクティブ(選択状態)にします。
- Sheets(“Sheet1”)
- End Sub
- サブルーチンの終了を示しています。
これ以降のコードは、別の処理として扱われます。
- サブルーチンの終了を示しています。
使用例2: シートのインデックス番号で、シートをアクティブにする
シートのインデックス番号を指定してシートをアクティブにする方法を紹介します。
これにより、特定のシートを選択状態にすることができます。
コード例
Sub ActivateSheetByIndex()
Sheets(2).Activate
End Sub
処理結果
このコードを実行すると、2番目のシートをアクティブにします。
シートの順序が変わる場合でも、インデックス番号を使ってシートを指定できるため、特定のシートを選択する際に便利です。
コードの動作概要
Sheets(2).Activate
で、2番目のシートを指定してアクティブにしています。
Sheetsオブジェクトを使うことで、シート名ではなくインデックス番号でシートを指定することが可能です。
インデックス番号はシートの順番に基づくため、シート名が不明な場合でも指定できます。
ただし、シートの順番が変わるとアクティブにするシートも変わるため、状況に応じて使い分けが必要です。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ActivateSheetByIndex()
- 新しいサブルーチン(マクロ)を定義しています。このサブルーチンの名前は「ActivateSheetByIndex」です。
サブルーチンの中に、シートをアクティブにするための処理を記述します。
- 新しいサブルーチン(マクロ)を定義しています。このサブルーチンの名前は「ActivateSheetByIndex」です。
- Sheets(2).Activate
- Sheets(2)
- Sheetsオブジェクトを使って、2番目のシートを指定しています。
インデックス番号を使うことで、シート名を知らなくても順番に基づいてシートを選択できます。
ただし、このインデックス番号はシートの並び順に依存するため、シートの順序が変わると選択されるシートも変わります。
- Sheetsオブジェクトを使って、2番目のシートを指定しています。
- .Activate
- 指定したシートをアクティブにします。
このメソッドを使うことで、シートを選択状態にし、そのシートで操作を行う準備を整えます。
- 指定したシートをアクティブにします。
- Sheets(2)
- End Sub
- サブルーチンの終了を示しています。
この行で「ActivateSheetByIndex」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
【 Name 】シートの名前を取得する
Name
プロパティは、シートの名前を取得したり変更したりするために使用します。
シート名を確認したり、新しい名前に変更する際に役立ちます。
使用例1: シート名を単体で取得する
シート名を取得するには、Name
プロパティを使用します。
これにより、指定したシートの名前を簡単に取得することができます。
コード例
Sub GetSheetName()
MsgBox Sheets(1).Name
End Sub
処理結果
このコードを実行すると、1番目のシートの名前がメッセージボックスに表示されます。
特定のシートの名前を確認する作業などに役立ちます。
コードの動作概要
Sheets(1).Name
で、1番目のシートの名前を取得しています。
Nameプロパティを使うことで、シート名を直接取得できるため、特定のシートの名前をメッセージボックスに表示したり、他の処理に利用したりすることができます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub GetSheetName()
- 新しいサブルーチン(マクロ)を定義しています。
このサブルーチンの名前は「GetSheetName」で、シートの名前を取得して表示するための処理を記述します。
- 新しいサブルーチン(マクロ)を定義しています。
- MsgBox Sheets(1).Name
- Sheets(1)
- Sheetsオブジェクトを使って、1番目のシートを指定しています。
ここでは、インデックス番号を使ってシートを選択しています。
- Sheetsオブジェクトを使って、1番目のシートを指定しています。
- .Name
- Nameプロパティを使って、指定したシートの名前を取得します。
このプロパティは、シートの名前を文字列として返します。
- Nameプロパティを使って、指定したシートの名前を取得します。
- MsgBox
- MsgBox関数を使って、取得したシート名をメッセージボックスに表示します。
この関数は簡単な確認作業などに便利です。
- MsgBox関数を使って、取得したシート名をメッセージボックスに表示します。
- Sheets(1)
- End Sub
- サブルーチンの終了を示しています。
この行で「GetSheetName」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
使用例2: シート名を変更する
特定のシートの名前を変更するには、シートをSheets
オブジェクトで指定し、Name
プロパティを使用します。
シート名でシートを指定することで、順序に関係なく特定のシートの名前を変更できます。
コード例
Sub RenameSheet()
Sheets("Sheet1").Name = "NewSheetName"
End Sub
処理結果
このコードを実行すると、シート名が「Sheet1」のシートの名前を「NewSheetName」に変更します。
既存のシートの名前を変更したい場合に便利です。
コードの動作概要
Sheets("Sheet1").Name
を使って、名前が「Sheet1」のシートを指定し、そのName
プロパティに新しい名前「NewSheetName」を代入しています。
これにより、該当するシートの名前が新しい名前に変更されます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub RenameSheet()
- 新しいサブルーチン「RenameSheet」を定義しています。
このサブルーチンの中で、特定のシートの名前を変更する処理を行います。
- 新しいサブルーチン「RenameSheet」を定義しています。
- Sheets(“Sheet1″).Name = “NewSheetName”
- Sheets(“Sheet1″)
- Sheetsオブジェクトを使って、名前が「Sheet1」のシートを指定します。
シート名で指定するため、シートの順序に影響されません。
- Sheetsオブジェクトを使って、名前が「Sheet1」のシートを指定します。
- .Name
- シートのNameプロパティを使って、指定したシートの名前を取得・変更します。
- = “NewSheetName”
- Nameプロパティに新しいシート名「NewSheetName」を代入しています。
これにより、シートの名前が「NewSheetName」に変更されます。
- Nameプロパティに新しいシート名「NewSheetName」を代入しています。
- Sheets(“Sheet1″)
- End Sub
- サブルーチンの終了を示しています。
これで「RenameSheet」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
使用例3: 全シートの名前を取得 (For Next文)
すべてのシートの名前を取得するには、繰り返し処理である「For Next文」を使用します。
この方法を使うと、ワークブック内にあるすべてのシートの名前を順に取得し、処理することができます。
コード例
Sub GetAllSheetNames()
Dim i As Long
For i = 1 To Sheets.Count
MsgBox Sheets(i).Name
Next i
End Sub
処理結果
すべてのシート名を順にメッセージボックスで表示します。
シート数が固定されている場合に便利です。
コードの動作概要
For i = 1 To Sheets.Count
を使って、ワークブック内のすべてのシートを順番に参照します。Sheets(i).Name
で、「i」番目のシートの名前を取得し、MsgBox関数でその名前をメッセージボックスに表示します。
このようにすることで、シートの順番に関係なく、ワークブック内にあるすべてのシート名を確認できます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub GetAllSheetNames()
- 新しいサブルーチン「GetAllSheetNames」を定義しています。
このサブルーチン内で、すべてのシート名を取得して表示する処理を行います。
- 新しいサブルーチン「GetAllSheetNames」を定義しています。
- Dim i As Long
- 変数「i」をLong型として宣言しています。
この変数は、For Nextループのカウンタとして使用します。
Long型は、大きな数値を扱うことができるため、シート数が多くても問題なくカウントできます。
- 変数「i」をLong型として宣言しています。
- For i = 1 To Sheets.Count
- ここからFor Nextループが始まります。
変数「i」を「1」から「Sheets.Count」までの範囲で繰り返します。
「Sheets.Count」は、ワークブック内のすべてのシートの数を返します。
ループのたびに変数「i」の値が「1」ずつ増え、各シートに順番にアクセスします。
- ここからFor Nextループが始まります。
- MsgBox Sheets(i).Name
- Sheets(i)
- Sheetsオブジェクトを使って、i番目のシートを指定します。
「i」はループのたびに変化するため、すべてのシートを順に参照します。
- Sheetsオブジェクトを使って、i番目のシートを指定します。
- .Name
- シートの名前を取得します。
- MsgBox
- 取得したシート名をメッセージボックスで表示します。
これにより、すべてのシート名が順に確認できます。
- 取得したシート名をメッセージボックスで表示します。
- Sheets(i)
- Next i
- For Nextループの終わりを示しています。
ここで変数「i」の値を「1」増やし、指定された範囲(1からSheets.Countまで)に達するまでループを繰り返します。
- For Nextループの終わりを示しています。
- End Sub
- サブルーチンの終了を示しています。
これ以降は別の処理が記述されます。
- サブルーチンの終了を示しています。
使用例4: 全シートの名前を取得 (For Each文)
繰り返し処理である「For Each文」を使うことで、すべてのシートの名前を取得することができます。
この方法は、シート数が変わる場合にも柔軟に対応でき、シートを1つずつ処理する際に便利です。
コード例
Sub GetAllSheetNamesForEach()
Dim sh As Worksheet
For Each sh In Sheets
MsgBox sh.Name
Next sh
End Sub
処理結果
このコードを実行すると、ワークブック内のすべてのシート名が順にメッセージボックスで表示されます。
For Each文を使うことで、シート数が変わった場合でも柔軟に対応できます。
コードの動作概要
For Each sh In Sheets
を使って、ワークブック内のすべてのシートを順番に参照します。sh.Name
で、各シートの名前を取得し、MsgBox関数でその名前をメッセージボックスに表示します。
For Each文を使うことで、コードが簡潔になり、シート数の変化にも自動的に対応できます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub GetAllSheetNamesForEach()
- 新しいサブルーチン「GetAllSheetNamesForEach」を定義しています。
このサブルーチン内で、すべてのシートの名前を取得して表示する処理を行います。
- 新しいサブルーチン「GetAllSheetNamesForEach」を定義しています。
- Dim sh As Worksheet
- オブジェクト変数「sh」をWorksheet型として宣言しています。
このオブジェクト変数は、For Each文の中で、シートを1つずつ参照するために使用します。
- オブジェクト変数「sh」をWorksheet型として宣言しています。
- For Each sh In Sheets
- For Each文の開始です。
Sheetsオブジェクトの中の各シートを順番に参照し、オブジェクト変数「sh」に代入します。
この文では、すべてのシートを1つずつ処理するため、シート数が増減しても問題なく対応できます。
- For Each文の開始です。
- MsgBox sh.Name
- sh.Name
- オブジェクト変数「sh」が現在参照しているシートの名前を取得します。
- MsgBox
- 取得したシート名をメッセージボックスで表示します。
For Each文の繰り返しにより、すべてのシートの名前が順に表示されます。
- 取得したシート名をメッセージボックスで表示します。
- sh.Name
- Next sh
- For Each文の終了を示しています。
これにより、次のシートをオブジェクト変数「sh」に代入し、繰り返し処理を続けます。
すべてのシートが処理されるまでループが続きます。
- For Each文の終了を示しています。
- End Sub
- サブルーチンの終了を示しています。
これで「GetAllSheetNamesForEach」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
【 Add 】シートを追加する
Add
メソッドは、Excel VBAで新しいシートをワークブックに追加するために使用します。
シートの追加位置を細かく制御するために、Before
やAfter
という引数を使うことができます。
- Before引数
- 新しいシートを指定したシートの前に追加します。
- After引数
- 新しいシートを指定したシートの後に追加します。
使用例1: シートの先頭に、新しいシートを追加
シートを追加するには、Sheets.Add
メソッドを使用します。
追加する位置を指定することで、ワークブック内のどこに新しいシートを挿入するかを決めることができます。
コード例
Sub AddSheetAtBeginning()
Sheets.Add Before:=Sheets(1)
End Sub
処理結果
新しいシートをワークブックの先頭に追加します。
データの順番を意識して追加したい場合に便利です。
コードの動作概要
Sheets.Add Before:=Sheets(1)
を使って、新しいシートをワークブックの先頭に追加しています。Before
引数を使うことで、どのシートの前に新しいシートを挿入するかを指定できます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub AddSheetAtBeginning()
- 新しいサブルーチン「AddSheetAtBeginning」を定義しています。
このサブルーチン内で、新しいシートをワークブックの先頭に追加する処理を行います。
- 新しいサブルーチン「AddSheetAtBeginning」を定義しています。
- Sheets.Add Before:=Sheets(1)
- Sheets.Add
- 新しいシートをワークブックに追加するメソッドです。
- Before:=Sheets(1)
- Before引数を使って、1番目のシートの前に新しいシートを挿入します。
これにより、新しいシートがワークブックの先頭に追加されます。
- Before引数を使って、1番目のシートの前に新しいシートを挿入します。
- Sheets.Add
- End Sub
- サブルーチンの終了を示しています。
これで「AddSheetAtBeginning」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
使用例2: シートの最後に、新しいシートを追加
シートをワークブックの最後に追加するには、Sheets.Add
メソッドを使用します。After
引数を使うことで、新しいシートを既存のシートの後ろに追加できます。
コード例
Sub AddSheetAtEnd()
Sheets.Add After:=Sheets(Sheets.Count)
End Sub
処理結果
このコードを実行すると、ワークブックの一番最後に新しいシートが追加されます。
新しいデータを常に最後に追加したい場合に役立ちます。
コードの動作概要
Sheets.Add After:=Sheets(Sheets.Count)
を使って、新しいシートをワークブック内の最後に追加しています。After
引数を使うことで、指定したシートの後ろに新しいシートを挿入できます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub AddSheetAtEnd()
- 新しいサブルーチン「AddSheetAtEnd」を定義しています。
このサブルーチン内で、新しいシートをワークブックの最後に追加する処理を行います。
- 新しいサブルーチン「AddSheetAtEnd」を定義しています。
- Sheets.Add After:=Sheets(Sheets.Count)
- Sheets.Add
- 新しいシートをワークブックに追加するメソッドです。
- After:=Sheets(Sheets.Count)
- After引数を使って、ワークブック内の最後のシート(Sheets.Count)の後ろに新しいシートを追加します。
Sheets.Countは現在のシート数を返すため、常に最後の位置にシートを追加することができます。
- After引数を使って、ワークブック内の最後のシート(Sheets.Count)の後ろに新しいシートを追加します。
- Sheets.Add
- End Sub
- サブルーチンの終了を示しています。
これで「AddSheetAtEnd」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
使用例3: 指定した箇所に、新しいシートを追加
コード例
Sub AddSheetAtSpecificPosition()
Sheets.Add Before:=Sheets(2)
End Sub
処理結果
:2番目のシートの前に新しいシートを追加します。
シートの配置順を細かく制御したい場合に便利です。
コードの動作概要
Sheets.Add Before:=Sheets(2)
を使って、ワークブック内の2番目のシートの前に新しいシートを追加しています。Before
引数を使うことで、指定したシートの位置を細かく調整できます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub AddSheetAtSpecificPosition()
- 新しいサブルーチン「AddSheetAtSpecificPosition」を定義しています。
このサブルーチン内で、特定の位置に新しいシートを追加する処理を行います。
- 新しいサブルーチン「AddSheetAtSpecificPosition」を定義しています。
- Sheets.Add Before:=Sheets(2)
- Sheets.Add
- 新しいシートをワークブックに追加するメソッドです。
- Before:=Sheets(2)
- Before引数を使って、2番目のシートの前に新しいシートを挿入します。
この指定により、2番目のシートの位置に新しいシートを挿入し、既存のシートを後ろにずらします。
- Before引数を使って、2番目のシートの前に新しいシートを挿入します。
- Sheets.Add
- End Sub
- サブルーチンの終了を示しています。
これで「AddSheetAtSpecificPosition」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
【 Delete 】シートを削除する
Delete
メソッドは、指定したシートをワークブックから削除します。
削除時の確認メッセージを非表示にしたい場合は、Application.DisplayAlerts
プロパティを利用して制御します。
Application.DisplayAlertsプロパティをFalseに設定すると、削除時の確認メッセージが非表示になります。
これにより、処理が途中で止まることなく自動で進行します。
処理後はTrueに戻して、通常の警告を表示させましょう。
使用例1: 先頭にあるシートを削除
シートを削除するには、Delete
メソッドを使用します。
削除時に表示される警告メッセージを非表示にするには、Application.DisplayAlerts
プロパティを使用する必要があります。
コード例
Sub DeleteFirstSheet()
Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True
End Sub
処理結果
このコードを実行すると、先頭のシートが削除されます。Application.DisplayAlerts = False
を使用することで、削除確認のメッセージを非表示にしています。
コードの動作概要
Sheets(1).Delete
で先頭のシートを削除します。
削除時に表示される確認メッセージを非表示にするため、Application.DisplayAlerts
プロパティを使用してメッセージの表示を制御しています。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub DeleteFirstSheet()
- 新しいサブルーチン「DeleteFirstSheet」を定義しています。
このサブルーチン内で、先頭のシートを削除する処理を行います。
- 新しいサブルーチン「DeleteFirstSheet」を定義しています。
- Application.DisplayAlerts = False
- Application.DisplayAlertsプロパティをFalseに設定しています。
これにより、シートを削除するときに表示される確認メッセージ(「本当に削除してもよろしいですか?」)が非表示になります。
削除の自動化を行う際には、この設定を使うと便利です。
- Application.DisplayAlertsプロパティをFalseに設定しています。
- Sheets(1).Delete
- Sheets(1)
- 先頭のシートを指定しています。
Deleteメソッドを使うことで、このシートを削除します。
- 先頭のシートを指定しています。
- .Delete
- シートを削除するメソッドです。
この処理を実行すると、指定したシートがワークブックから完全に削除されます。
- シートを削除するメソッドです。
- Sheets(1)
- Application.DisplayAlerts = True
- Application.DisplayAlertsプロパティをTrueに設定し、削除確認メッセージを再び表示するように戻します。
これにより、今後のシート操作で確認メッセージが表示されるようになります。
- Application.DisplayAlertsプロパティをTrueに設定し、削除確認メッセージを再び表示するように戻します。
- End Sub
- サブルーチンの終了を示しています。
これで「DeleteFirstSheet」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
使用例2: 最後にあるシートを削除
ワークブック内の最後にあるシートを削除するには、Sheets.Delete
メソッドを使用します。
シート数が変動する場合でも、Sheets.Count
を使うことで、最後のシートを確実に指定できます。
コード例
Sub DeleteLastSheet()
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
End Sub
処理結果
一番最後のシートを削除します。
シート数が変動する場合でも、最後のシートを確実に削除できます。
コードの動作概要
Sheets(Sheets.Count).Delete
を使用して、ワークブック内の最後のシートを削除します。Application.DisplayAlerts
プロパティを利用して、削除確認のメッセージを非表示にすることで、削除を自動化します。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub DeleteLastSheet()
- 新しいサブルーチン「DeleteLastSheet」を定義しています。
このサブルーチン内で、ワークブックの最後のシートを削除する処理を行います。
- 新しいサブルーチン「DeleteLastSheet」を定義しています。
- Application.DisplayAlerts = False
- Application.DisplayAlertsプロパティをFalseに設定しています。
これにより、シートを削除するときに表示される確認メッセージ(「本当に削除してもよろしいですか?」)が非表示になります。
削除の自動化を行う際には、この設定を使うと便利です。
- Application.DisplayAlertsプロパティをFalseに設定しています。
- Sheets(Sheets.Count).Delete
- Sheets(Sheets.Count)
- Sheets.Countは、ワークブック内のシート数を返します。
これにより、最後のシート(インデックス番号がSheets.Count)を指定します。
- Sheets.Countは、ワークブック内のシート数を返します。
- .Delete
- 指定したシートを削除するメソッドです。
この処理により、最後のシートをワークブックから削除します。
- 指定したシートを削除するメソッドです。
- Sheets(Sheets.Count)
- Application.DisplayAlerts = True
- Application.DisplayAlertsプロパティをTrueに設定し、削除確認メッセージを再び表示するように戻します。
これにより、今後のシート操作で確認メッセージが表示されるようになります。
- Application.DisplayAlertsプロパティをTrueに設定し、削除確認メッセージを再び表示するように戻します。
- End Sub
- サブルーチンの終了を示しています。
これで「DeleteLastSheet」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
使用例3: 指定した箇所にあるシートを削除
特定の位置にあるシートを削除するには、Sheets.Delete
メソッドを使用します。
削除するシートの位置がわかっている場合に、この方法を使うと簡単に特定のシートを削除できます。
コード例
Sub DeleteSpecificSheet()
Application.DisplayAlerts = False
Sheets(2).Delete
Application.DisplayAlerts = True
End Sub
処理結果
このコードを実行すると、2番目のシートを削除します。
削除するシートの位置がわかっている場合に便利です。
コードの動作概要
Sheets(2).Delete
を使用して、ワークブック内の2番目のシートを削除します。Application.DisplayAlerts
プロパティで削除確認メッセージを非表示にし、削除の自動化を実現しています。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub DeleteSpecificSheet()
- 新しいサブルーチン「DeleteSpecificSheet」を定義しています。
このサブルーチン内で、指定した位置にあるシートを削除する処理を行います。
- 新しいサブルーチン「DeleteSpecificSheet」を定義しています。
- Application.DisplayAlerts = False
- Application.DisplayAlertsプロパティをFalseに設定しています。
これにより、シートを削除するときに表示される確認メッセージ(「本当に削除してもよろしいですか?」)が非表示になります。
削除の自動化を行う際には、この設定を使うと便利です。
- Application.DisplayAlertsプロパティをFalseに設定しています。
- Sheets(Sheets.Count).Delete
- Sheets(2)
- 2番目のシートを指定しています。
削除したいシートのインデックス番号を直接指定することで、そのシートを削除します。
- 2番目のシートを指定しています。
- .Delete
- 指定したシートを削除するメソッドです。
この行で、指定されたシート(2番目のシート)がワークブックから削除されます。
- 指定したシートを削除するメソッドです。
- Sheets(2)
- Application.DisplayAlerts = True
- Application.DisplayAlertsプロパティをTrueに設定し、削除確認メッセージを再び表示するように戻します。
これにより、今後のシート操作で確認メッセージが表示されるようになります。
- Application.DisplayAlertsプロパティをTrueに設定し、削除確認メッセージを再び表示するように戻します。
- End Sub
- サブルーチンの終了を示しています。
これで「DeleteSpecificSheet」サブルーチンの処理が完結します。
- サブルーチンの終了を示しています。
この記事のまとめ
「Sheets」オブジェクトのメソッドとプロパティを活用することで、シートの追加、削除、取得、名前変更といったさまざまな操作が効率的に行えるようになります。
この記事で紹介したコードを活用して、作業の自動化を実現しましょう。
ポイントのおさらい
- シートをアクティブにする方法
- シートを選択状態にするには、
Activate
メソッドを使います。
シート名やインデックス番号でシートを指定できるので、目的のシートにすぐに移動できます。
⇒ 「【 Activate 】シートを選択する」をもう一度見る。
- シートを選択状態にするには、
- シート名の取得・変更
- シートの名前を取得したり変更する場合は、
Name
プロパティを使います。
特定のシートの名前を取得するだけでなく、一括で名前を変更するなど、シートの管理に便利です。
⇒ 「【 Name 】シートの名前を取得する」をもう一度見る。
- シートの名前を取得したり変更する場合は、
- シートの追加方法
- Sheets.
Add
メソッドを使うと、シートを好きな位置に追加できます。Before
やAfter
の引数を使って、新しいシートを指定した場所に挿入できるので、シートの順序を思い通りに制御できます。
⇒ 「【 Add 】シートを追加する」をもう一度見る。
- Sheets.
- シートの削除方法
- 不要なシートを削除するには、
Delete
メソッドを使います。
シートを削除する際の確認メッセージを表示しないようにするには、Application.DisplayAlerts
プロパティを活用しましょう。
これで自動削除の際も処理が止まらずに進みます。
⇒ 「【 Delete 】シートを削除する」をもう一度見る。
- 不要なシートを削除するには、
- 「Worksheets」と「Sheets」の違い
- VBAでシートを操作する際、
Worksheets
はワークシートだけを対象とし、Sheets
はワークブック内のすべてのシート(グラフシートなども含む)を対象にします。
用途に合わせて使い分けると、効率的にシート操作が可能です。
⇒ 「「Worksheets」と「Sheets」の宣言の違いについて解説」もう一度見る。
- VBAでシートを操作する際、
シート操作をマスターして作業を効率化しよう
この記事で紹介したシート操作の基本をマスターすると、日々のExcel作業が大幅に効率化されます。
例えば、シートの追加や削除をワンクリックで行えたり、シート名を自動で一覧化することでシート管理が楽になったりします。
シートの順番を自在に制御できることで、毎月の報告書作成やデータ集計も簡単になります。
この記事を活用するには
まずは、紹介したコードをコピーして実行し、自分のExcelで動かしてみましょう。
コードを実際に動かすことで、どのようにシートが追加・削除されるか、名前が取得・変更されるかが理解しやすくなります。
次に、必要に応じてコードを少しずつカスタマイズし、自分の業務に合わせて活用してみてください。
この記事が参考になったと思ったら、他のVBA関連の記事もぜひご覧ください。
シート操作を自在に使いこなせるようになれば、Excel作業の効率は劇的に向上します!