GoGoマクロのブログ

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

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

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

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サイト

 

本日、以上です。


五輪に学ぶ!中高年のマクロ作りのコツとは・・・

2021-08-11 06:12:53 | マクロ作成のコツ

今回の東京オリンピックでは、

驚きの13歳、最年少の金メダリストが現れたかと
思ったら、その後には、何と未だ12歳の
銀メダリストまで出てきましてーの、(驚!)

12歳のメダリストって、皆さんあの子の何倍の人生、
生きてきてます?(笑)

あのスケボー解説者じゃないですけど、まさにそれ、
「ゴン攻めが、鬼アツで、超やべー!」ですね。(笑)

ちなみに、私の場合、もうかれこれあの子の5倍
近くは人生を生きていますけど、
今だメダルの一つも貰ったこともない人間ですが、、
それが何か。(汗)

けど、観ましたか?

その一方で、58歳のルクセンブルグの卓球選手。

若い選手が卓球台の周り駆けまわっている中にあって、
あの人の動きは、正に「すり足」の、横移動だけです。

彼女、惜しくも1回戦で若い相手に負けてはしましたですが、
それでも、結構強かった!

まさに、”熟年の技”いいますか、”年の功”いいますか、
自分の年齢での戦い方をよく知っているわけですね。


で、ここからが今日の本題です。

そのコツ、「スポーツ」でも、「マクロ」でも、一緒だと、
わたし思うんです。

ここの読者の皆さん、特に中高年の(これ書いてる私と
同年代の・・・)高年齢の人が圧倒的に多いわけなんですけど、

だからと言う訳ではないですけれど、
少々頭の回転が鈍くなって来た(!?)中高年者でも
十分にできる方法で、いわば「すり足」で、

のマクロ作りを、このメルマガ講座ではかれこれ
17年間に渡り、教えてきたわけなんです。

よその講座でマクロの勉強経験のある方なら、
他のVBA講座と比べて頂ければよくわかるように
この講座は、至って省力です。

難しい横文字の専門用語を覚えることもしませんし、
やれオブジェクトだとか、メソットだとか、
そんなものも一切出てきません。

そんなものは無しでも、最大限のExcel自動化に
力発揮できる方法を、私の35年のSE経験から
(マクロ歴で言うと30年の経験から)、

あの58歳の卓球選手が、

若い選手のように激しく動き回らなくてもいい方法を、
極力小力で、体力、知力を抑えながら
マクロが組める方法論を駆使して、

長年のシステム開発の現場にて養った私の経験を
フル活用させて構築してきたマクロ作りの
その方法を、ここで教えて来ました次第です。

殆どのVBA先生の教え方は、卓球台の周りを激しく
動きまわって球打つスタイルの若い人向けであり
ますから、ネットを見ればみな何処も体力を必要
とするやり方ばかりですけれど、

中高年の卓球選手はそうは動けませんから、
動けないなりの戦い方いうのがあるわけです。
彼女は、それを 良ーーーく わきまえている!

サッカーでもそうです。

五輪代表のストライカーでもゴール前の絶好球を
思いっきり蹴ってしまって失敗する。。。
いわゆる、昔から言われる決定力不足ですね。

けど、今話題のあのメッシはゴール前で決める
シュートの殆どが、ただ相手ゴールキーパーの
居ない所に流し込むだけ、です。

超一流のメッシは、二流か三流のストライカーのように
豪快で奇麗でカッコいいゴールを決めようとは、
決してしないわけです。

ムダな動きと、確実性を欠いた動きはしない。
する必要もない。

それを良くわかっているか否か言うのが、一流と
そうはなれない二流、三流との大きな差である
と思います。

また、今大会で日本人第1号の金メダルを取った柔道の
高藤選手は、決勝戦では、相手の反則3回で勝利しました。
試合後のインタビューで、

「豪快に勝つことはできなかったけど、これが僕の柔道だ!」
と胸を張った。

奇麗な1本勝ちではなく、”泥臭く勝つ”のが自分の戦い方だ
と胸を張ればいいわけです。

マクロの場合でも、どうしても少々なれてくると、
「もっと奇麗に書きたい、スマートに書きたい、」
と、そう言い出す人が多いわけですけれども、、

「泥臭いマクロを書く」それの何が悪いのか?!

中・上級者になっても自分の泥臭く書くスタイルをつらぬいて
いける人の方が、どんどんマクロは作れますし、
成長もしていけますことは、私の長年の教えてきた験則からも、
それは確かな事実です。

見栄を張って背伸びをして、スマートに書こうする必要なんか
どこにも無いです。

超一流サッカー選手のメッシは、スマートなゴールなんか決して
狙っちゃいません。確実に点の取れる方法で、ゴールを狙う、
結果の残せるやり方を知っている。

それは、サッカーでも、マクロでも、全く同じです。
マクロも、メッシのゴールを見習って行きましょう!


それでは、本日のまとめです。

・中高年には中高年の勝ち方がある!

・泥臭く、自分のスタイルを貫く人こそ、
 結果は残せる!


以上です。


なお、

下記はこれに関連した私のブログの関連記事になります。
特に初級者から中級者へ向かってる方は、こちらも是非
ご参考にしてください。

必見!「マクロの上達を阻む原因」とは・・・(三太郎のブログ)