大変遅くなりましたが、今月実施しました「全国統一マクロ検定」(初級)の結果を発表します。
受験いただきました皆さんには、お忙しい中でのご参加と、そのチャレンジ精神に、 深い感謝と大いなる敬意を表したく思います。ご参加、誠にありがとうございました!
解答提出者の皆様には、個別の合否に付きましては既に結果をお知らせ致しまして、 初めて合格した皆さんにはささやかながらの合格証書の方もお送りさせて頂きました。
ここでは、全体的な以下の総評を述べさせていただきたいと思います。
・出題の狙いとポイント&不合格者に見られた主なミス
・合格率!
■出題の狙いとポイント&不合格者に見られた主なミス
今回の検定課題は、支社の売上高に関する好成績だった部署を毎月社内表彰する為の マクロ作成問題を出題しました。
今回のデータ(出力イメージ)は、こんな感じです。
それで、
今回のポイント、週末のメルマガでお話する予定の「マクロの仕様」関係以外で言うと、 作業用ワークシートの使い方ですね。
出題文の中の[細則]にあった以下の部分がポイントだったかと思います。
要するに、これは元々のデータシートの上で並べ替えやフィルター掛けたりをやってしまうと いちいち元に戻さないとならない(正確に元に戻すためのマクロも組まなきゃならない)ですから、 模範解答の想定では、当講座でも何度とやってきている別途ワーク用の作業シートを設ける、 というやり方ですね。
解答では、前者でやってうまく戻せなくなっている、戻し忘れがあったりする、 などのケースが見受けられました。
なお、その辺のノウハウに関しての詳しくは、下記のサイトで解説しています。
あと、今回の不合格者で一番多かったのが、可変の直し忘れです。 たとえば、
.SetRange Range("A1:C48") とか
Range("B48:C48").Select とか
この辺の固定値の部分を可変の変数に直し忘れがあると、 データ数を増やしてテストやった場合に、出力結果の 順位に誤りが出ることになります。
以上、2点特にご注意ください。
■合格率
それで、気になる今回の『合格率』なんですが、
今回も、まるっきり一切の手加減なしで厳しく、厳密に合否の判定をさせてもらいました。
合格率・・・・60.0%
合格した皆さん、おめでとうございます!
「初級」合格者の皆さんには既に「合格証書」をお送り致しました。 (合格2度目以上の人は除きます。)
あと、今回はアシスタントの4名にも採点のご協力をいただきました。 ご協力誠にありがとうございました。大変助かりました!
それで、毎回言っておりますが、
今回も想定合格率は6割に設定したレベルの問題作りをいたしましたわけですが、
なんと!この結果、ドンピシャの「60.0%」達成でした!
合格率が大体6割になるような難易度を設定して、毎回あれこれ 頭を捻っての問題作りというのを私やってきていますので、
それが、今回初めて、その狙い通りの数字になったという事は、 問題作ったわたし個人的には、実に感無量です。出題者冥利に尽きます!
たぶん、何でもそうだと思いますが、試験問題を作る人ってそこが一番難しい 思いますから、(たとえば大学入試のセンター試験で、数学の平均点が60点 になるような難易度の問題作らねばならないとか・・ですね。) それ、そうそう容易くできることではありませんですから、 たぶん、これは教える側の人間の中でも最高の、最高峰の、高等技術ですね!(笑)
今回、このような狙い通りのドンピシャな結果が出て、もう思い残すことは 何もないですから、これで「マクロ検定」は終了してもいいと思うくらいです。。。 (それは冗談です。)
いづれにしましても、次回はいよいよの中級検定やる予定にしていますので、 今度そちらは、まぁ合格率2~3割でしょうか。未だ具体的な数字までは 考えてはいないですが、なにぶん、中級は初級の合格者のみを対象に実施する 予定ですので、少々難し目な問題を出さないとねらい目通りの合格率は得られない のではないかと思っています。
だからと言って、すごい難問を出す!と脅しているわけでは決してありませんので(笑)、 悪しからず、次回も楽しみにお待ちくださいネ。
今日おすすめのコンテンツ
それでこれ、
先日、ゴールドディスク教材のある購入者の方から
ちょっとご質問をもらいまして、
「1シートに10数個あるグラフの折れ線の色を全て赤に
変えてほしいと頼まれた。」とのことで、
それだったら、Lessonのこの辺にあるグラフ特集を見て
やったらこれはすこぶる簡単だよ!
そう言って気軽にお返事したんですが、、 そしたら、
「結局できなくて手でやることにした。。」 との返事がありまして、
まさか、なんで??
(それ、全然難しい話じゃないよな~・・・)思いまして、
その辺のLesson内容を確認してみました所、
この辺と言ってたこの辺がこの辺ではなくて、
その次の 辺でした。。。(笑)ってm(__)m
それで、今回の上記で紹介した内容で応用できない?
(そんなに難しいわけではない思います)ので、、
念の為ですが、以下にその辺の解説しますと、
(念の為です。。)
例のごとくに「マクロの記録」で、今回やりたいとこと
「グラフの折れ線の色を赤に変える」という操作をまず
記録してみるわけです。
そして、上の例ではグラフを消している部分の下記の
この一行を(時間使って調べなくても、何も考えなくても
誰でもわかる部分と思います。)
ActiveChart.Parent.Delete
先に記録して出来たコードの一行で置き換えてあげれば、
ただそれでいいだけですね。
ActiveChart.Parent.Delete
↓
ActiveChart.ChartColor = 色番号
です。
(色番号も「マクロの記録」をしたコードに出てきます。)
だから、このごく簡単な方法で、
「シート上のグラフを一発で全て○○にする方法」
については、やりたいことは何でもこの方法でごくごく
簡単に、しかも素早く、できるわけです。
これで、色を変えるにしろ、サイズを変えるにしろ、
実線を点線に変えるにしろ、 矢印付けるだったり、
矢印の種類を変えるだったりも、
色々出来る思うわけです。素早く!簡単に!ですね。
以上、賢いやり方、もう皆さんよろしいでしょうか?
VBA本に書いてあるみたいに難しく難しーく考えたら、
ダメですよ!(笑)
VBAの世界では「いい変数名を付けなさい!」だなんて、 実に気安く口にする人って多い思いますけど、、
ほんと、ネーミングをナメたらいけませんよ!(怒!)
先日もある読者の方から、
「aの変数に入れるなど奥が深いですよね。」
とのご感想を頂戴しましたが、
読者の皆さん、それ、わかってくれてます?
これは相当に、皆さんの可也想像を絶するほど、 実は奥深いです。
それで、
当講座のレッスンでは、マクロの作成中に変数を使う場合、 必ず、
a とか、b とか、c とか、・・・
For文のループを回す場合であれば、
i とか、j とか、・・・
ですね。
そのような極、ごく、短い変数名というのを、わざとそれ 必ずそのようにしています。
ベテランの読者の方であれば、その辺はもうよくご存じ かと思いますが、長い場合でも、a1とかa2とか、ですね。
それは、あえて「自称ネーミング評論家」である私がー と言うよりも、
富士通やらで長年教壇に立って、新人プログラマーを大勢 育てて来たわたくし三太郎が、あえてこのメルマガでは そう皆さんに教えてきたという次第です。
とにかく、これもこの方の感想にも書いてもらったように、 数々の奥深い理由があって、、のことであるわけですが、 (話し出すとまた長く、長ーくなりますんで、もし機会 あったら詳しく色々数々書いてみたいとは思っていますが、、)
とにかく、その数々の理由の中で一番、最も大事で肝心な ことと言いますのが、紛れもなく
「プログラミングの最中に思考を中断させてはなりません!」
これに尽きるわけです。
今回の新元号や、生まれてくる我が子の名前や、 起業する際に考える社名や店名や、等々は元よりですが、
そこまで重要でないにしても、我々人間が人生の中で、 何かちょっとした名前を付けなければならないことに 迫られる場面には、度々出くわすわけであります。
その際に「しっくりくる良いネーミングを考える・・・」
という行為には、それなりの時間も掛かりますし、脳みそ もそれなりに使わなければならないわけですね。
でないと、そう易々とは、しっくりくる「良いネーミング」 なんてものは、早々には中々思い浮かぶものではないわけです。
でそれは、
変数名やマクロ名(プロシージャー名)もまたしかりです。
ちまたの生半可なVBA先生には実に多い 「いい変数名を付けなさい!」だなんて言うセリフでの その理屈はプロからすると、ちゃんちゃら可笑しいです。
しっくりくる良い変数名を考えるのには、それなりに、 数秒や数十秒、時として数分、数十分の時間を要すること になるわけです。
とにかく、
マクロのプログラミングの最中に「ここで変数を使おう!」
そう考えた瞬間といいますのは、まず間違いなく、脳みそが 一番活発に働いている時であるわけです。
自分の「プログラミング脳」が一番波に乗ってきている その瞬間であるに、間違いはありません。
これは、普段の仕事中で考えるとわかりやすい思いますが、
仕事に集中して作業が効率よく進んでるという最中にもし、 いらぬ電話がかかってきたり、上司に話しかけられたりで 突如、せっかくのその集中が途切れてしまった・・・(泣) なんていうことは、誰でも経験あるかと思いますが、
それは、非常に誰でも嫌うイヤなことでありますので、 作業効率の面を考えると、時として、大きな痛手にも なり兼ねません。
まぁ、電話や上司というのは他人事で起きることですから それはまぁ仕方ないにしろ、
せっかく、プログラミングが調子に乗ってきていて、 自分の脳みそが集中して一番活発に働いているであろう 「ここで変数を使おう!」と思いついたその瞬間に、
あろう事か、自らその瞬間に別の事を考えて(変数名を 考え出すようなことをして)、その集中力を中断させて しまうような人が、けっこう多く居るわけです。
プログラミングの効率を妨げる最大の敵というのが、 まさしく、この「ここで変数を使おう!」の瞬間に 「変数名を考える・・」という行為に他ならないのです。
私から言わせると、 それは、まったくもって「もったいない!」の極みです。
だから、プログラミングに集中できている最中には、 絶対に、他の余計なことは、一切考えてはなりません! それが、プログラマーの鉄則事です。
プロのプログラマーの場合には、開発プロジェクトで 命名規約というものが予め決められていますので、 プログラミングの最中に変数名考える為に思考を止める といった非効率なプログラミングは、していません!
途切れても何らさほど影響のないただのExcelの操作中 というのとは違って、マクロ作り(プログラミング)の 最中と言いますのは、とにかく頭がフル回転の”思考中” となっているわけなんですから、
その頭の中の思考は、絶対に途中で中断させないこと、 それこそが、プログラミングでは最も重要である事に 間違いはないです。
話はちょっと変わりますが、
つい昨日も私、何かふと気になったワードがありまして、 ネットでYahoo!検索をしよう思いブラウザを立ち上げた わけなんですが、
そのブラウザが立ち上がって来るほんの僅か数秒の間に、 目にしたYahoo!ニュースに1秒気を取られてしまったが 為に、「あれ?」ってなったしまったわけです。何を 検索しようとしたのか忘れてしまったのです。(>_<)
24時間以上経った今だに、それ思い出せずに、ずっと もやもやしています。(笑)
家の中でも、何か取りに行こうと2階へ上がる階段で、 一瞬何か考え事してしまったら、結局、何を取りに 来たんだか忘れてそのまま1階に戻った・・・なんて 経験は、ありませんか?(幸い、私の家には2階がない ですので、私この経験はないのですが。。笑)
話しを戻しますが、ですから、
一瞬でもプログラミングの最中に他の余計な事を考えては いけない。余計な事に気をそらされない様なつくり方いう のを心がけていかないといけないわけです。
それが、当講座で変数名に a を使う第一の理由であります。
何も考えずに、出てきた順に、aやbやcや・・と順に付ける。 この方法であれば、ほんと何も考える必要がなくなるわけ ですので、集中が途切れません。
又それは、私が普段から絶対やっちゃダメだ!と繰り返し 言っている「変数名をいちいち強制的に定義する」という 無駄な行為でも、またしかりです。
「この変数の型はどうだのこうだの、よくわからんから 型の部分は書かなくてもいいや-だの、定義書く位置が 上の方だとか、etc、」と、
色々考えるのと書く時間とが掛かって、せっかくの集中が その無駄な数秒か十数秒の要する時間の為に、一旦途切れ てしまうことになるわけです。
それが、「ここで変数を使おう!」の度に、毎回毎回その 無駄時間を費やして、その度に、毎回毎回一番活発に働いて いたプログラミング脳の中断を余儀なくされてしまう。
だから、間違っても「変数の宣言を強制する」のオプション にチェックを入れたら、絶対にいけませんよ!
外野の声には惑わされること無く、正しくデフォルトの OFF設定のままで、マクロは組んでくださいね。 (設定の方法は こちら )
なお、そもそも未だ「変数って何?」の段階の人は、 こちら をご覧ください。
あと、マクロ名にしましても当講座の場合には、いつも
Macro1、Macro2、Macro3、・・・
ですね。これは、
「マクロの記録」ボタンを押した時の画面に表示される デフォルト名で、何も考えずにただOK押して操作の 記録がすぐに開始できるようにしているわけです。
これも、その時思いついたことを「マクロの記録をする」 という作業だけに集中してできるように、との考え方で、 それを推奨して教えています。
「何かこんなマクロを作ってみよう、」とか 「わからない構文の書き方調べよう、」とか思って、
「マクロの記録」を開始した瞬間というのは、これも あなたの頭の中で一番いいアイデアが浮かんだ瞬間である に間違いはない思います。
そこで「マクロの記録」の開始ボタンを押したその瞬間に、
「このマクロ名は何がいいかなぁ~?」だなんて、
そんな余計なことをもし考え出してしまったら、 そのせっかく頭に浮かんだ思考中のアイデアが、それで 一時中断を余儀なくされてしまうことになるわけです。
何度も言いますが、 それは何とも、非常にもったいない極み、です。
しかも、
その中断は電話や上司といった他人からもたらされるもの ではなく、自分、自らの意思でもたらした中断(時間的な 損失)、考える作業であるプログラミングでは最も重要な 集中力の一時停止を自らでやってしまうということになる わけです。
だから、もし、
それらに適したわかりやすいネーミングが必要とあらば、 マクロが完成した後に、あとでゆっくり考えて、VBE の(プログラムの)画面で文字列の置換をして、名前 付け替えすれば済むだけの話です。
以上、効率よいプログラミングの方法(正しいマクロの 組み方)いうものを、この講座のやり方でしっかりと 身に付けていってくださいネ。
今日の話のまとめになりますが、
自分のプログラミング脳が一番活発に働いている最中に、 余計な事を(変数名やマクロ名を)一瞬たりとも考えたら、 絶対にダメですよ!
プログラミングの最中は、思考の中断は厳禁です!
マクロ作成中は、プログラムだけに集中するべし!
今日の話、おわかりいただけましたでしょうか? これは重要ですよ!
やりましたー!
これ、奇跡的なナンバーじゃないですかっ!
そうです、これ、昨日みんなに自慢しましたら、
みんなに同じツッコミをされました。。。(笑)
これじゃ「和令和令じゃん!」って。
でも、それは違います。
車のナンバーに「0808」というのは無いですから、
(Excelで数字入れる時と一緒で頭に0は入れられないですから、
取得可能なナンバーいうのは「・808」だけですね。)
逆さから読んで、この「8080」しか、
新元号にちなんだ「令和」ナンバーってのは、
これしかないわけです。
なんか、
車やさんからナンバー何にするか聞かれた時に、
奇跡的に、このナンバー閃いたわけです。
時代の先取りが出来て私的には実に、めでたい限りです!
当分これ、自慢しまくろう思います。(笑)
それで、肝心な事は、
元号発表された後の街頭インタビューなんかを観ていると、
「令和の時代、ほんと平和で良い時代になってほしいです。。。」
言う人が多かったように思うんですけど、、
これも違う思います。
「なって欲しい」ではなくて、自分たちで「そうする」んです。
天皇陛下がするんでも、安倍首相がするんでも何でもありません。
日本国民の一人一人が、令和の時代をいい時代にする為に、
「自分に何が出来るのか、何をしたらいいのか?」と、
それを真剣に考えて、行動するわけです。
一億なんぼの人口のあるこのニッポンで、
皆がそれ考えて行動していったのならば、次の令和の時代が
「良い時代にならないわけがなかろう・・・。」 と、
私はそう思うのです。
この講座でやっているパソコン仕事の「働き方改革」でもそうです。
会社のPC作業を効率化して 生産性を上げていくというために、
「自分には何ができるのか?自分は何を勉強すべきなのか?」
自分の会社の仕事の効率化は、一人一人の皆が自分自身で考えて
そして、実行すべきものだと思うのです。
けっして、他力本願ではいけないですし、
それは社長からの「令」だからいやいややる、というものでは
ないわけです。
特に、ここの読者の皆さんにおかれましては、
一人一人がそう考えて、正しいマクロ化(自動化)進めて行く為の、
是非その為の原動力となっていって欲しい思っています。