クリエイティブを楽しむ新メディア 牛の歩みで更新中!クリエイティブを楽しむ新メディア 牛の歩みで更新中!
プログラム・IT
マクロの名前を変える!~VBAで"脱コピペ"プログラミング③
2023年5月21日(日曜日)

「脱コピペ」によってプログラミング初心者の階段をのぼるための"やること第3弾"は「マクロの名前を変える」です。

マクロの名前を変える理由は、3つあります。

理由① マクロの中身を知るきっかけにしたい

マクロの名前を変更するためには、その中身がどんなものか理解していなければなりません。「マクロの名前を変える」ために、あらためてマクロの中身をよく見てみるきっかけにしようというのが第1の理由です。

理由② マクロ名を英数字に統一したい

Officeのマクロ(VBA)ではマクロ名に日本語を付けられますが、一般的なプログラミングでは英数字とごく一部の記号程度の文字しか名前に使えません。VBAを足掛かりにしてプログラミングを身に着けていきたい場合は、マクロ名を英数字でつける習慣をつけておくと良い、というのが第2の理由です。

理由③ 一覧表示を見やすくしたい

Officeのマクロは一般的なプログラミングと違い、マクロ一覧から選んで実行するという事情があります。扱うマクロの数が多くなると、実行したいマクロを探すのに手間取るようになってくるのでそれを避けたい、というのが第3の理由です。

さっそく実践!

以上の3つの理由を踏まえて、この連載の第1回でAIに教えてもらった「VBAで1000以下の素数を抽出するコード」の名前を見直してみることにします。

AIが付けたマクロの名前は「PrimeNumbers」でした。これをどのような名前に変えるのがいいかを、3つの理由に沿って考えてみましょう。

①マクロの中身を知る

マクロの中身を知るために役立つのが、この連載の第1回で行なった「マクロにコメントを書く」ことです。

第1回でコメントをつけながらマクロの中身を見ていた結果として、すでにマクロ
内容が「1000以下の素数をイミディエイトウィンドウに表示する」ということがわかっています。

'1000以下の素数をイミディエイトウィンドウに表示するマクロ
Sub PrimeNumbers()
(以下略)

このようにコメントを書く段階で躓かなかった場合は、すんなり先へ進めます。

逆に、よくわからなかった場合は、もともと「何を目的としてこのマクロを求めたか」を振り返りましょう。今回の例で言えば、AIに「1000以下の素数を抽出する」ことをお願いしたわけですから、とりあえずそれをマクロの中身の概要と考えてOKです。

②動詞と名詞を揃える

AIが付けたマクロ名は「PrimeNumbers」、日本語にすれば「素数」という直球の名前でした。はじめから英語表記なので日本語から変える必要はありませんでしたが、とはいえこのままというわけにもいきません。

「このマクロは何をするものなの?」と聞かれたときに「素数!」と答えるようなものですから、この名前では「素数をどうするのか」がわかりません。Officeマクロはもちろん、他の一般的なプログラミングでも「名詞」+「動詞」くらいの情報を持った名前にする必要があります。

「PrimeNumbers」の中身は「素数を表示する(抽出する)」というものですから、「動詞」の部分は「View」や「Show」、あるいは「Output(出力する)」あたりが良いと考えられます。

なお、詳しくコードを読める人なら、「PrimeNumbers」では結果を"If isPrime Then Debug.Print i"という行で表示させていることから、動詞を「Print」とするのが良いと思うかもしれません。もちろん「Print」でもOKなのですが、モノがOfficeだけに「紙に印刷する」と誤解されるおそれを考えて、今回はやめておくことにします。

また、表示すると言ってもダイアログなどが開くわけではなく、デバッグ用のイミディエイトウィンドウに"こっそり"羅列するだけですから、今回は動詞を「Put(置く)」にすることにします。

③語順を考えて新マクロ名を決定

名詞は「PrimeNumbers(素数)」、動詞は「Put(置く)」と決めたので、英語の語順から考えてマクロ名を「PutPrimeNumbers」とするのが順当でしょう。

ただし、Officeのマクロ一覧はアルファベット順に並ぶことに注意が必要です。

例えばExeclのセル情報を読み書きするような次の6つのマクロがあるとすると、

6つマクロがある例
・GetAllCellData
・PutAllCellData
・GetRowData
・PutRowData
・GetColumnData
・PutColumnData

これらは、次の順番で表示されます。

マクロ一覧の並び順(マクロ名は動詞+名詞)
・GetAllCellData
・GetAllColumnData
・GetRowData
・PutCellData
・PutColumnData
・PutRowData

名詞が先に来るように名前を付ければ、

マクロ一覧の並び順(マクロ名は名詞+動詞)
・AllCellDataGet
・AllCellDataPut
・ColumnDataGet
・ColumnDataPut
・RowDataGet
・RowDataPut

以上のようになります。

どちらが見やすいか、どちらが使いやすいかはその時々によるのですが、大切なのは「統一すること」です。「動詞名詞」の順のマクロと「名詞動詞」の順のマクロが混在すると、実行したいマクロを探しにくくなることは言うまでもありません。

方々からコピペしてきたマクロはそれぞれ命名方法が異なりますから、まずは統一することを考えて「マクロの名前を変える」をぜひ実行してみてください!

(つづく)

コメントを記入

メールアドレスが公開されることはありません。 が付いている欄は必須項目です