GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

マクロの変数名は考えるな!感じろ!

2021-08-30 07:46:13 | マクロ作成のコツ

ペットの名前にしろ、会社名や新しくできる部署名や、
はたまた、産れてくる自分の子供の命名にしろ、、

何かの「ネーミングを考える」という行為は、案外と
結構な難しい作業であります。

なかなか、「しっくりいく良い名前」というのは
思い当たらないもので、考えつくまでには多くの時間も
掛かる場合も多いものですし、結局、いくら考えても
思い付かないまま時間オーバーで、まぁ「テキト─に」
で済ませてしまう場合というのが、殆どかと思います。


でそれ、マクロを作る際(プログラミングの場合)で
考えてみて欲しいのですけれども、

まずは、皆さんに質問です!

Q.
マクロ作成時に考えねばならない「名前」には
何がありますか?

Thinking time !

  ・
  ・
  ・


答え.
主には、「マクロ名」と「変数名」ですね。

分かりましたか?


で、ネットやらVBAの本やらを見てみると、よく
「マクロ名は、適当に付けろ!」と、
殆どのサイトや本にはそう書いてあるかと思いますが、

「その適当に付けろ言うのが難しいんだろうがっ!」
って、思いません?(笑)

古い話ですが私、人生で初めてプログラミングを
教わったのが大学での情報処理の授業だったですが、

その時に、同級生が自分で作ったプログラムの名称
に「自分の彼女の名前」を付けたヤツがおりまして、
それで、先生に酷く怒られてたのを記憶しています。

+++++++++++─
Sub Hanako()

  処理

End Sub
+++++++++++─

とかですね。(笑)

大学生ならまだしもですが、社会人の我々がそんな
テキトーな名前をつけてしまったら、可也マズイ
わけです。(笑)

だから、適当に!とは言うものの、マクロ名一つ
付けるにしても、それなりに、それ相応に考える
時間は掛かるわけです。

で、プログラミングの場合、その一番の問題は
なかなか適当な良い名前が思い付かない・・・。
ということではありません!

それによって(名前を考える為の時間によって)、
せっかくの思考が(集中力が)そこで途切れて
しまう・・・、という点にあります。

ほんと、これはVBAやる人の中にはよくわかってる
人が殆ど見当たらない言うのが困りものでしてー、

VBAでは皆、せっかく高まってきた集中力を自らで
途切れさせてしまう様なプログラミングの仕方を
する人が(そう教える人が)非常に多いわけです。

これまでに何度も何度も私言ってきましたですが、
プログラミングとは思考力です。考える作業です。

だから、集中して考えるということが、特に大変
に重要になってきます。

とりわけ間違いの元は、変数名。

プログラミングの最中に、ここで変数使おう!
と思い付いたその瞬間が、プログラミング中に
おいては、一番に頭がよく働いていて、集中も
できている、まさにその時であるわけであります
のに、

そこで、また「変数名は適当に!もしくは適切に!」
なんて考えになってしまうと、(そもそもが、
「プログラミング」と「何かの名称を考える」という
思考は、全くの別物になりますから・・・。)

頭の中で、せっかく高まっていたプログラミングの
思考も集中力も、そこで一旦途切れてしまうことに
なるわけです。

そう、それは集中して仕事をはかどってやれている
最中に、いらぬ電話が掛かってきたり、アホな上司
から話しかけられたり(笑)するのと似た状況だと
言うとイメージしやすいかと思います。(ほんと
大迷惑な話ですよね。)

電話や上司からの他人事であれば仕方もないですが、
マクロ作りの最中に、自らそうした大迷惑な状況に
してしまう様なプログラミングの方法をしてる人が、
VBAの場合には非常に多いと感じます。

これ、私の様な職業で日夜プログラミングをやって
いるプロの職業プログラマーの場合においては、

システム開発のプロジェクト毎に予め「命名規約」
と呼ばれる変数名などの名前の付け方を定めた
ルールブックというのが用意されてありますから、

プログラミングの最中に変数名やらマクロ名やら、
を自分で新たに考える必要がない(すなわち、
プログラミング中にそれで思考力は中断されない)、
そうした段取りで作ることになっています。

読者の皆さんがVBAのプログラムを組む場合には、
そうしたプロの下準備というものは、たぶん無く、
何も準備はしてない思いますから、

変数名を考える度に、度々の思考の中断を
余儀なくされて、集中力も失ってしまう様な
プログラミングのスタイルでやっているかと
思います。

で、

この講座のレッスンではそれをどうやってるか?
集中力途切れさせない為にどう工夫しているか?

なんですが、

もう、ベテラン読者の皆さんならば重々これは
ご承知かとは思いますが、

「変数名」は、出てきた順に a、b、c、・・・、

「マクロ名」は、マクロの記録のデフォルト名の
そのままに。すなわち、いつもの

─────────────────────────+
 [開発]タブの[コード]で [マクロの記録] をクリック
 →「マクロの記録」画面が出るので、そのまま[OK] 
 をクリック。
─────────────────────────+

これですね!

ここで何か考えちゃうとせっかくの自分のリズムを
自らで壊してしまうことになりますので、

ここは何も考えずに(デフォルトのマクロ名のままで)
「OKボタンをただ押すだけで」先へ進むというのが、
当講座で(思考を止めずに)いつもやっているやり方
になっています。

ここで、すぐ「マクロ名は何にしよ?」って始まって
しまったら、もう最初から思考が停止してしまうわけ
ありますから、

これから「マクロ作ろう!」「作ってやるぞー!」
の自分自身の勢いが、それで一旦止まって(冷めて)
しまうのです。

けれど、

ネット検索して見つけたVBAサイトの殆どが、
「マクロの記録」を開始したここの画面の解説には、

OKボタンを押す前に、マクロ名には
「任意のわかりやすいマクロ名を入力してー」と、
必ずそう書いてあるかと思いますから、

それで必ず「わかりやすいマクロ名って・・・?」
と、脳がそちらの思考に入ってしまいますね。

いいですか!

皆さんが「マクロの記録」の画面を目にした瞬間
いいますのは、

これから「よーし、マクロ作るぞー!」って、
せっかく気持ちがそうなっている、まさにその瞬間
でありますから、そこでその勢いと思考を中断させ
てしまうようでは、実に勿体ないです。

それは、変数名に関しても同じです。

VBAの殆どのサイトでは、
「わかりやすい変数名を付けなさい!」って、
必ずそう書いてあるかと思います。中には
「可読性を考えてー」だなんて、そんな素人考え
のデタラメを平気で書いてあったりもします。
皆、それが正しい事だと信じてしまう・・・。

私から言わせると、これは実に勿体ない話です。

この講座で17年間に渡りまして読者の皆さんに
マクロの作り方を教えてきた当講座のレッスン
では、

変数名は、出てきた順に、

 a、b、c、・・・

なのです。

これだと、考える必要性がありませんから、
思考の中断も起こりませんし、時間も一切
掛からないわけです。

おまけに、変数名のスペルは書き間違ってないか?
だなんて、余計な心配をする必要性もまったく
ありませんし、

なんなら、後で(マクロ完成してから)
変数名を変更するいうことも構いません思います。

けど、たとえばマクロ名だとデフォルトで付く、

 Macro1、Macro2、Macro3、・・・

このままの方が作った順に並んでくれますから、
(私の頭の中ですと、よりわかり良いですから)

まぁ、5個や10個くらいのマクロ数の名称であれば、
そのまま(上記のデフォルト名のままでー、)に、
私ならそうします。

同様に、変数名の場合も出てきた順に並んでいると、
後で捜しやすいですし、作っている時の記憶も、
より鮮明に残りやすくなるものだと思いますので、

たとえば、机の上にうず高く積まれた書類の山でも、
その中から必要な資料をすぐ捜し出せる名人技の
要因とは、

「大体この辺の時期に作った資料だったよなー」と、
作った記憶の順番で積まれてるお陰じゃないですか?

パソコンでも、ファイルがいっぱいのフォルダで、
日付順にファイル並び替えてみると目的のものが
見つけやすくなるいうのと、これは一緒ですね。

だから、変数名も作った順番に上から、

 a、b、c、d、e、・・・、

といった具合に、並べて置くのが良いですから、
当講座で17年間やってきたレッスンでは一貫して、
上記のような変数名の付け方をしてきた次第です。


但しですが、それらの名称には必ず、

+++++++++++─
Sub Macro1()
' 表の日曜日に色を付けるマクロ
'
  ・
  ・
+++++++++++─

といった具合の説明のコメント文を書いておくよう
してくださいね。(人間は、時間が経つと
必ず忘れてしまう生き物ですから・・・。笑)

しかも、このコメント文での説明なら、どんなに
長くて詳しい説明でも書けますから、後ですっかり
内容忘れてしまった頃に見た場合でも、
よりわかりやすく書けます。

例)

+++++++++++─
×
Sub 日曜に色付けるマクロ()


Sub Macro1()
' 勤務表の日曜日の日付欄(C列のセル)を赤で塗るマクロ
' ついでに土曜日も黄色で塗る。(祭日は?まだ未定)
+++++++++++─

 

変数名の例)

+++++++++++─
×
Dim Address


' 変数aは、顧客の自宅住所(都道府県名からマンション
'     名までが必ず全て入った「フルの住所」です。)
+++++++++++─


てな具合に、です。

このようなコメントの説明は、マクロが完成した直後の
未だ記憶に新しい内に、ゆっくりと詳しく書いておけば
いいだけの話ですから、

この変数名の例でも、マクロ作りの最中には思考の中断
が一切起こりませんわけですが、

変数名の宣言を強制してしまってる場合の、上の悪い例
での Dim Address の場合ですと、これ書かない事には
先へは進めませんから最低でも数秒間のタイムロスと、
思考の中断を必ず起こします。

おまけに、

Dim Address だと、
いったいこれは誰の何の、何処まで入った住所なのか?
それ一切不明ですから、このような中途半端な情報は、
かえって後で困る、バグの温床になる、そのリスクも
高くなります。

 

最後に、今日の話をまとめますと、

プログラミングは、
「思考を途切れさせる作り方をやってはいけません!」

マクロ作りの場合も、この一言に尽きます。


今回のプログラミングで最も重要な集中の仕方の話、
ご理解いただけましたでしょうか?

皆さんのより効率良いマクロ作りの為の
ご参考になりましたら、幸いです。


なお、今回のこの話は、当講座「GoGoマクロ」の
下記サイトにも詳しく書いていますので、

今日の話にもし「なるほど!」「感心した」
という方は、こちらも是非参考にご覧ください。

マクロ作りの邪魔をする最大の敵とは?
GoGoマクロのWebサイト

 

本日、以上です。


コメント    この記事についてブログを書く
« 五輪に学ぶ!中高年のマクロ... | トップ | マクロは「活字」で学ぶのが... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

マクロ作成のコツ」カテゴリの最新記事