マクロとは、Excel上で実行する各種操作/作業をプログラムを作成して、自動的に実行するプログラムです。(マクロもユーザー関数もVBAという言語で記述します。)
例えば、「あるエリアに入力されたデータを、別のエリアにコピーして、集計し、Excelを名前を付けて保存する」という作業が毎週発生しているとした場合に、データ入力後の処理を自動化することは比較的簡単にできます。最も簡単な方法は「マクロの記録」という方法を利用することによって、簡単に自動化ができます。
[マクロの記録と実行]
- 最初にマクロの記録をクリックします。
- マクロの記録画面が起動しますので、OKをクリックします。(本来は必要に応じて、マクロ名やマクロの保存先を設定しますが、今回はデフォルトのままとします。)
- マクロの記録画面が終了したタイミングから、Excelに関連するすべての操作の記録がスタートします。基本的にはすべての操作が記録されます。
- 下記は「Sheet1」です。下記の表を元に「Sheet2」で集計を行います。「Sheet2」には昨年の12月の成績がマクロの記録を行う前にピボットテーブルにて集計されているとします。今回は、古いデータをマクロの記録を使って、ピボットテーブルを最新の物に自動で更新できるようにするマクロを作成します。
-
「Sheet2」の集計用のシートを選択し、日付の部分に「Sheet1」の日付をコピー、また、同じ様に成績データの欄に「Sheet1」の成績のデータをコピーします。ここまでできたら、ピボットテーブルを更新してください。12月の古いデータが1月の最新のものになります。
-
日付でファイルを保存します。ここまでを記録するものとして、メニューから記録終了をクリックして記録を終了します
-
記録されたマクロは、記録をスタートさせる際のマクロ名でModule1に記録されます。(どこの標準モジュールに記録されるのかは、記録スタート時の設定によります。指定しない場合には、新規に標準モジュールが作成され、記録されます。)
-
マクロはSub xxx ~ End Subの形式で記述されます。関数との違いは、戻り値がないということです。中に記載されているプログラムを順番にし実行していくことになります。
-
作成されたマクロを実行する場合には、メニューからマクロを選択して、マクロ画面を起動。実行したいマクロを選択して実行ボタンをクリックすると記録されたマクロが実行されます。
-
▶ボタンをクリックで実行する事もできます。
-
実行すると、「Sheet1」の最新データを「Sheet2」のピボットテーブルに自動で更新できるようになります。(「Sheet1」の成績データは最新のデータに書き換えなければ結果は変わりません。マクロ実行前に最新のものに書き換えるようにしましょう。)マクロの実行方法としては、自分で作成したものであっても同様の実行方法となります。
-
マクロ(プログラム)の中身を一つ一つ説明するとプログラム内部のコメントのようになります。
-
操作しているすべての処理を記録していることから、本来必要でない処理/操作についても記録されているケースがあります。また、システム的に自動的に記録されているものが意図している操作と同様のものにならないことや、無駄な処理が入っている場合があります。その際には、プログラムを必要な部分だけ利用し、一部は効率的な処理に変更することにより、より効率的なプログラム(マクロ)を作成/用意することができます。
-
自動で生成したプログラムを効率的な形で修正すると以下のようになります。
-
効率的に処理を行うために、コピー元やコピー先のセルに名前を付けてプログラムの処理を見やすく/簡単になるように調整しています。また、プログラム上、わかりやすくするために保存するファイル名(パス付)を変数に定義しています。
-
不要なコメントなどを削除し、さらに効率化すると以下のようになります。
-
このように、Excelには、処理の自動化を行うためのプログラムを自動的に記述(記録)する機能があり、さらに、そのプログラムを修正していくことで効率的にプログラムを作成することができます。当然、1から自分でプログラムを記述して作成することも可能です。また、その中で作成したプログラムや関数をプログラムの中で利用することもできます。
[デバッグ]
プログラムの記述は1回記述して、スムーズ動くプログラムを作成することは難しく、通常は複数回の錯誤の結果として出来上がるのが一般的で、プログラムを作成している過程で、処理がエラーで止まった場合にその原因を特定して修正する必要があります。そのエラーを特定する方法として、プログラムの検証機能がいくつか用意されています。
<<ウォッチングウィンドウ>>
-
ウォッチウインドウをメニューの表示/ウォッチウインドウから表示すると、通常はプログラムが記述されているウインドウの下に表示されます。
-
このウインドウに、変数などを直接記述するか、プログラムから特定の変数などを選択して、ドラッグ&ドロップでウォッチウインドウに表示します。
-
この操作により、対象の変数などが現在どのような値(その他情報も含めて)となっているのかを確認することができます。
※1行づつのプログラム実行などと併用して、プログラムの問題点を確認し、修正するのに利用します
<<1行づつプログラムを実行する>>
- プログラムは通常実行するとすべての処理を連続的に最後まで実行されます。もし、1行づつ実行したい場合には、「F8キー」を押すと1ライン、プログラムが実行されます。実行している部分は黄色いハイライトで表示されます。
-
また、もし、どこかの処理で処理を停止したい場合にはプログラムの左端をクリックすると赤茶色のハイライトが表示されます。そうすると一機にプログラムを実行した場合でも、このハイライトの実行直前でプログラムが停止します。
そこから、1行づつ実行して処理の正しいことを確認したい場合にはF8キーで1行づつ実行することが可能です。
※F5キーを押すと一機にすべてのプログラムを実行(▶ボタンと同じ)
[検索]
プログラムを記述している場合に、特定の変数等の特定の文字を検索して確認するケースがよく発生します。この場合に検索機能を利用します。メニューから編集/検索を選択して、検索画面を表示します。 検索する文字列を入力後、次を検索をクリックすると、順番に検索対象の文字が選択されていくことになります。