マクロの記録で覚えるプログラミング【初心者向け】

Excelのマクロの記録を例に、どうやってプログラミングを覚えていくか、自分のやり方を紹介します。

マクロの記録

私もすべてのコードを覚えている訳ではないので、とっかかりとしてマクロの記録はよく使います。

マクロの記録

マクロの記録を使うとき、気を付けていることは、一操作だけにすることです。

今回、セルの配置を中央揃えにする操作を記録しようと思います。

マクロの記録中のワンショット。ここでは中央揃えにしようとしているところ。

一操作にする訳は、マクロの記録をするとコードがずらずら大量に生成されるからです。

中央揃えの1操作だけで生成されたコード

図は、セルの配置を中央揃えにする操作だけをマクロの記録で記録した結果です。

たった1操作だけでもこれだけコードがずらずらと生成されます。

慣れないうちは、これらのコードの意味が分からず、混乱すると思います。

ましてや何操作もマクロの記録で記録すると、もっと訳が分からなくなります。

そこで1操作だけにとどめておく訳です。

F2で調べる

マクロの記録でコードが生成されたら、次にやるのはコードの意味を調べることです。

私はF2でオブジェクトブラウザーを開き、調べています。

オブジェクトブラウザー

今回、HorizontalAlignmentについて調べてみようと思います。

オブジェクトブラウザーで気をつけないといけないのは、候補がいっぱいあるので適切なものを選ぶことです。

今回はセルの配置だったので、クラスがRangeのところをクリックしました。

ほしかった情報は、概要欄です。

HorizontalAlignmentがプロパティであること、Variant型であることが分かります。

プロパティというのは、静的な属性のことでして、例えばイミディエイトペインで次のように入れると、

イミディエイトペイン

アクティブなセルのHorizontalAlignmentというプロパティ情報が分かります。

-4108という具体的な数字が出てきてしまうと、「何のこっちゃ??」と思いますが、プロパティに入っている値は、たいていEnumとされています(Enumというのは列挙型のことでして、今は意味が分からなくてもいいです。数字をわざわざ英語の意味のある文字列にしてくれるモノというような、ざっくりとした理解で十分です)。

今回調べたHorizontalAlignmentでは単にVariant型となっていたので他にどんな値が入ってくるのか分かりませんでしたが、こういうときは他の候補をクリックして、Variant型ではないものを探すとよいです。

今回はすぐ下のStyleクラスのHorizontalAlignmentがXlHAlign型であることが分かりました。

XlHAlign型のところがリンクになっているのでクリックすると、XlHAlign型の詳しい内容が分かります。

こうして見ると、英語の意味からなんとなくそれぞれの値がどんな意味を持っているか分かりませんか?

もし分からなくても、ワークシートのこちらと比べることで、意味が分かると思います。

セルの書式設定の文字の配置

さてここでオブジェクトブラウザーに戻って、一番上にあるXlHAlignCenterというのをクリックしてみます。

すると、-4108という数字が出てきました。

これでイミディエイトペインで「?activecell.HorizontalAlignment」と打ったときに-4108だった意味が分かりました。

xlHAlignCenterという値だったということです。つまり、中央揃えということです。

プロパティは逆に、値を入れることもできます。

イミディエイトペインに次のように値を入れてみます。

イミディエイトペイン上では特に何も変化がないと思いますが、ワークシートに戻ると、アクティブセルの配置が右揃えになっているはずです。

なお、プロパティの中には参照のみできて、代入はできないものもあります。

地道な作業

こうして一つ一つのコードの意味を調べていくと、マクロの記録で記録されたコードのほとんどが必要のないコードだということが分かります。

関係のないコードは削ります。

関係のないコードを削ったところ

一つだけのプロパティのために、With~End Withを使うのも仰々しいので、With~End Withもとってしまいます(With~End Withの意味が分からない方は、こちらも参照してください)。

そうすると、こんな風になりました。

これがセルの配置を中央揃えにするコードということになります。

ついでに、xlCenterも正しい値に直しておきましょうか。マクロの記録は適当なので、正しいEnumをセットしてくれているとは限りません(xlCenterもXlHAlignCenterも-4108なので、実装時に不都合はないのですけど、可読性が悪くなるので私は正しい値にします)。

あとは、この作業の繰り返しです。

やりたいことを一操作ずつマクロの記録で記録していき、F2で調べ、不要なコードは削除していく……地道な作業となります。

お金がかからない

このやり方の何がよいかというと、お金がかからないということです。

本を買ったり、教室に通うとお金がかかります。

しかし、マクロの記録で地道に調べる方法なら、時間はかかりますが自力で答えにたどり着くことができます。

一度覚えてしまえば応用がききますしね。

このやり方で私は他のスクリプト言語も覚えました。例えば秀丸マクロ。

テキストエディタの秀丸

秀丸エディタにもマクロの記録のような機能がついていまして、操作を記録⇒ヘルプで調べるという作業を繰り返すことで秀丸マクロを覚えました。

何より、秀丸の場合は本当の意味でのちゃんとしたヘルプがついているので、自学自習がしやすかったです(Microsoftのヘルプはヘルプと言えない・・・・)。

Wordマクロも同様に覚えました。PowerPointはマクロの記録がないのでこの手法は使えませんが、F2(オブジェクトブラウザー)は備えてあるので、ExcelとWordの応用で覚えました。