はじめに
この課題は全10問中7問目の課題です。
着任時に取り組むことができるExcel VBA初学者向けの課題を作成しました。
今回の課題では、For Each文を使用して複数のシートに対して一括操作を行うマクロを作成していただきます。For Each文の基本を学び、ブック内のすべてのシートを対象に操作を行う方法を習得していただければと思います。
目次
目的
For Each文の基本を学び、複数のシートに対して一括操作を行う方法を習得することを目的としています。この課題を通じて、ブック内のすべてのシートに対して同じ操作を実行する方法を実践的に学びます。
前提
この記事の内容を理解するためには、以下の参考記事を先に読むことをおすすめします。
VBAの基礎を理解して課題に取り組んでください。
課題内容
ブック内のすべてのシートを対象に、それぞれのシートのA1セルに「SheetName: ○○」という形式でシート名を入力するマクロを作成してください。
実装手順
1. 標準モジュールを追加する
標準モジュールは、複数のシートやブック全体で使用できるマクロを格納するための場所です。VBAエディタで新しい標準モジュールを追加します。
2. マクロのコードを記述する
- ExcelのVBAエディタを開いてください (
Alt + F11
) - 「挿入」→「標準モジュール」を選択し、以下のコードを入力します
※課題内容に取り組み、プログラムを開発した後に確認してください
Sub InsertSheetNames()
Dim ws As Worksheet
' すべてのシートに対して処理を実行
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = "SheetName: " & ws.Name
Next ws
End Sub
このコードは、ブック内のすべてのシートを対象に、それぞれのシートのA1セルに「SheetName: ○○」という形式でシート名を入力するマクロです。コードを入力した後、F5キーを押すか、VBAエディタの「実行」ボタンをクリックしてマクロを実行します。
+α
非表示のシートがある場合、上記のコードはエラーになります。シートが非表示の場合でもエラーが発生しないように修正してください。
以下のコードは対応策の一例です。
Sub InsertSheetNames()
Dim ws As Worksheet
' すべてのシートに対して処理を実行
For Each ws In ThisWorkbook.Worksheets
' シートが非表示でもエラーが発生しないようにする
On Error Resume Next
ws.Visible = xlSheetVisible
ws.Range("A1").Value = "SheetName: " & ws.Name
On Error GoTo 0
Next ws
End Sub
このコードでは、非表示のシートに対してもエラーが発生しないように処理を行っています。必要とする機能以外の要件は必ず整理するようにしましょう。
まとめ
今回の課題では、For Each文を使用して複数のシートに対して操作を行うマクロを実装しました。これにより、ブック内のすべてのシートに対して一括操作を行う方法を学ぶことができます。今後は、この基本を応用して、さらに複雑なシート操作に挑戦してみてください。