Last Updated on 2024年2月17日
はじめに
前回は「Hello, World!」プログラムを通じて、VBAの基本を学びました。今回は、VBAのさらなる基本概念を紹介した後、Excelのシート操作や文字書式の変更といった実用的なプログラムを作成します。
VBAの基本概念の復習と拡張
プロシージャとは
Subから始まりEnd Subで終わるコードブロックをプロシージャと呼びます。プロシージャ名は、そのプロシージャが何をするのかを示す名前をつけます。
プロシージャ名の付け方
プロシージャには名前を付ける必要があり、この名前はプロシージャが何をするのかを示すものであるべきです。名前を付ける際のいくつかの基本的なルールは以下の通りです:
- 使用できる文字 :プロシージャ名には、半角英数字や日本語を含むことができます。
- 初めの文字は数字以外:プロシージャ名は数字から始めることができません。
- その他のルール :他にもプロシージャ名に関する細かなルールがあります。たとえば、VBAの予約語(既にVBAで特別な意味を持つ単語)は使用できません。
プロシージャ名を付ける際にこれらのルールに違反すると、VBAエディタ(VBE)からエラーメッセージが表示されます。このようなフィードバックを通じて、「あ、これはだめなんだね」と気づきながら、命名規則を自然と覚えていくことができます。
コメントアウトの使い方
コード内で説明やメモを残すためにコメントアウトを使用します。VBAでは'(シングルクォート)を行の先頭に置くことで、その行をコメントとして扱います。例えば、「'これはコメントです」のように記述します。
よく使うモジュール
プログラムは標準モジュールに書きます。1つのモジュールに複数のプロシージャを記述できますが、管理しやすくするためには、関連する処理(プロシージャ)ごとにモジュールを分けることが推奨されます。
モジュールの種類
VBAには標準モジュールの他に、クラスモジュールやユーザーフォームなどがありますが、初心者の段階では標準モジュールに焦点を当てます。
オブジェクト、プロパティ、メソッドの説明
VBAでは、オブジェクトとはExcelのシートやセルのような要素を指します。プロパティはそのオブジェクトの属性や特性(例:名前、色など)を表し、メソッドはオブジェクトに対して行える動作や操作(例:追加、削除など)を意味します。これらの概念を理解することで、コードが行っている操作を正確に把握し、より効率的なプログラミングが可能になります。
実践プログラム:Excelシートの操作
さあ、いよいよ実践の時間です!一緒に手を動かしながらVBAの魅力を体感しましょう。以下のプログラムを実行して、Excelでの自動化の第一歩を踏み出しましょう。操作の様子は、この記事に添付された動画で確認できます。
シート操作プログラム
まず、シートを追加して、シート名を「報告書」にするプログラムを書いてみましょう!
下のコードをVBEにコピペして 実行してください。
実行は、 F5( もしくは、Fn + F5 ) です。
|
1 2 3 4 5 6 7 8 9 10 11 |
'*------------------------------------------------------------* '* [処理内容] '* ①シートを追加する '* ②追加したシート名を「報告書」に変更する '*------------------------------------------------------------* Sub AddSheet() '①シートを追加する ThisWorkbook.Sheets.Add '②追加したシート名を「報告書」に変更する ActiveSheet.Name = "報告書" End Sub |
(コードを書きやすくなる覚え方): VBAのコードを書く際には、オブジェクト、メソッド、プロパティを意識すると、コードの構造が理解しやすくなります。

(自分でコードを打ってみましょう!):
文字入力・書式変更プログラム
次に、B3セルに「2月報告書」という文字を入力し、文字の書式を太字、赤色、20ポイントに設定します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'*------------------------------------------------------------* '* [処理内容] '* ①「報告書」シートのB3セルに「2月報告書」と入力する '* ②B3セルの文字を太字にする '* ③B3セルの文字の色を赤にする '* ④B3セルの文字のサイズを20ポイントにする '* '*------------------------------------------------------------* Sub CreateText() '①「報告書」シートのB3セルに「2月報告書」と入力する ThisWorkbook.Worksheets("報告書").Range("B3").Value = "2月報告書" '②B3セルの文字を太字にする ThisWorkbook.Worksheets("報告書").Range("B3").Font.Bold = True '③B3セルの文字の色を赤にする ThisWorkbook.Worksheets("報告書").Range("B3").Font.Color = vbRed '④B3セルの文字のサイズを20ポイントにする ThisWorkbook.Worksheets("報告書").Range("B3").Font.Size = 20 End Sub |
次のステップ: 「With~End With」構文の活用
VBAでは、同じオブジェクトに対して複数の操作を行う場合、「With~End With」構文を使用することでコードをより簡潔に、読みやすくすることができます。この構文を使うことで、オブジェクト名を繰り返し記述する必要がなくなり、コードの冗長性を減らすことができます。
以下のコードは、「報告書」シートのB3セルに特定の操作を行う例です。前述のコードに比べてスッキリしたことがわかりますね。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
'*------------------------------------------------------------* '* [処理内容] '* ①「報告書」シートのB3セルに「2月報告書」と入力する '* ②B3セルの文字を太字にする '* ③B3セルの文字の色を赤にする '* ④B3セルの文字のサイズを20ポイントにする '* '*------------------------------------------------------------* Sub CreateText02() With ThisWorkbook.Worksheets("報告書").Range("B3") '①「報告書」シートのB3セルに「2月報告書」と入力する .Value = "2月報告書" '②B3セルの文字を太字にする .Font.Bold = True '③B3セルの文字の色を赤にする .Font.Color = vbRed '④B3セルの文字のサイズを20ポイントにする .Font.Size = 20 End With End Sub |
この構文を利用することで、同じオブジェクト(この例ではThisWorkbook.Worksheets("報告書").Range("B3"))に対する操作をグループ化し、コードの可読性を高めることができます。今後、複数のプロパティやメソッドを同一のオブジェクトに適用する場面では、この「With~End With」構文を活用してみましょう。
もし実行中にエラーが発生したら
VBAエディタの「リセット」ボタンをクリックして、エラー状態を解除してください。リセットボタンは、VBAエディタのツールバーにある四角い青いボタンです。リセットを行うことで、プログラムを最初から再実行できる状態に戻します。
まとめ
今回は、VBAを使ってExcelのシートを操作したり、文字の書式を変更する簡単なプログラムを作成しました。これらのプログラムは、これから頻繁に使用する基本的なコードです。何度も登場しますので、自然と覚えられますよ!


コメント