Excelには、人の作業を記録して自動的にプログラムを作る「マクロの記録」という機能があります。
「マクロの記録」で作成されたプログラムは、プログラミング言語VBAで記述され、自動作成されたコードの内容を確認したり編集することも可能です。
実際の業務をVBAで自動化するときには、「マクロの記録」ではなく、正確にコードを書いて作成することを強くおススメしますが、今回の記事では入門用と位置付けて、「マクロの記録」を使ってVBAを体験してみたいと思います。
マクロの記録とは
記録した操作がVBAで記述される

ねぇ、キャプテンVBA♡
VBAを実際に試してみたいんだけど、
何か簡単なコードを教えてくれないかな。



それなら「マクロの記録」の機能を
使ってみるといい!



「マクロの記録」ってなぁに?



「マクロの記録」を使えば、
自分がExcelで操作した内容が
自動的にVBAで記述されるんだ!



そんなことができるの?



できるぞ!
でも、補完的に使うものと理解したほうがよい。
「マクロの記録」だけに頼ってはダメだ!
あくまで部分的・補完的に!
「マクロの記録」は、ラクにプログラムコードが生成される機能として、世間的には評判が良いようです。
ただし、当サイトでは「マクロの機能」の使用はおススメしません。
この機能は、あくまで単発の人間の操作を記録するだけであり、処理の概要や操作の意図までは理解してくれません。処理の過程で発生したムダな操作もすべて記録され、あとで見返した場合や客観的に見た場合、何のためのコードか分からず、メンテナンス性が極端に悪くなってしまうのです。
また、マクロを作ったユーザー自身がコードの内容を理解しておらず、実務で使ってしまうのはリスクでしかありません。
実務とは、処理の分岐や繰り返しの概念も必要ですが、「マクロの記録」ではそのような実用的なコードは、まず作成できません。あくまで部分的・補完的な使用に留めましょう!



厳しいことをいうが、
中途半端なプログラムほど
危険なものはないんだ!



そうだよね。
しっかり学習しなきゃね。
マクロの記録の使い方
この章では、マクロの記録を実際に試して、VBAコードが自動的に記述されることを体験してみます。
マクロの記録を実行する場合には、ExcelでVBAが使える状態になっている必要があります。具体的にはファイルタブに「開発タブ」が表示されていることが条件です。まだ設定をしていないのであれば、下記の記事を参考に設定をしてください。




記録する操作について
この章で、「マクロの記録」を使って記録する操作は次の通りです。
- A1セルに「Test」と入力する
- 文字サイズを20にする
- 文字の色を赤にする
- 文字を太字にする
実践:マクロの記録






マクロ名は任意でよい。OKをクリック














マクロを実行してみよう
前処理
今回の操作は、「マクロの記録」機能を使っている関係で、意図しない余計な処理が含まれています。そのため、実行前に少しコードを編集する必要があります。下記の手順通り、コードを修正してください。
<手順>











これで実行の準備はOKだ!
実行


次にVBA編集画面の実行ボタン(▷)をクリック


改めてVBAコードを確認してみよう
自動作成されたVBAコード





やっぱりプログラミング言語って難しいのね・・
たった3つの操作なのにこんなに英語が書かれるの?



正確には違うぞ!
これは「マクロの記録」で自動作成されたコードだから、
余計なコードも含まれている。



そうなの・・?
実際はもっと簡単?(だといいな♡)



もう少し簡単だ!
そして、何となく推測もし易いコードだ!
ワタシが書いたコードを紹介しよう!
キャプテンVBAが書いたコード





あっ!全然違う!
これなら分かりやすいかも♡



だろ!
自動作成と人間が作成したコード比較




この2つのVBAコードを実行した場合、基本的に同じ結果が返されます。
(Testと入力され、文字サイズを20、文字色を赤、太字に設定)
「マクロの記録」を使って自動作成されたコードには、意図しない余計なコードが多く含まれています。一方、人間が作成したコードは、この記事を読んでいる方であれば、プログラミング経験者でなくても何となく推測できるコードになっているのではないでしょうか?
わずか3つの操作だけで、これだけの差が表れてしまうのです。当サイトが「マクロの自動記録」をおススメしない根拠です。
結果は同じにしろ、自動作成されたコードはメンテナンスは極めて困難で、普通はプロのプログラマーでもお手上げです。一から作り直したほうが早いと感じるでしょう。また、エラーが発生した場合も、エラーの原因・特定が極めて困難化します。
繰り返しますがVBAを実務に取り入れるのなら、「マクロの自動記録」に頼らずに、学習したうえで活用しましょう!
上記「人間が作成したコード」は、画像の通りにコードを入力すれば実際に実行して試すことができます!お時間があれば、お試しください。(当サイトでは今後も多くの練習用コードを紹介するように頑張ります!)



今回は少し厳しめの口調になったが、
怒っている訳じゃないぞ!
では、今日はここまで!
次回は、簡単なVBAの編集にチャレンジだ!

