さて、前回はちょうど15周年の記念日の配信ということで、 ノンプログラマー(本職のプログラマーではない初心者)が マクロを習得するためには、かなり重要な話 「マクロの記録」は飲み物です!
歴史的な背景も踏まえての、このような投稿を書きました。
で今回はその続き、実際に現実的な面から見た「マクロの記録を使うべき理由」について、です。 今日の話も、大変に重要ですよ!
「自分はマクロが苦手だ!」 「自分でマクロが作れない!」とお嘆きの人は、特に心して以下読んでくださいね。
では、まず初めに問題です。
Q.今、B2のセルに"2019年1月1日"という日付のデータがあったとします。これを自動で和暦表示に変えるマクロを作りなさい。
要するに、
"2019年7月1日" → "令和元年7月1日"
こう表示を自動で変える為のマクロ、ですね。このマクロを簡単に作る方法、わかりますか?
ネットで調べる?「ブッブー×」大はずれです。全然ダメです!
正解は、
まずは、必ず「マクロの記録」ですね! 素早く、正確に、これ作る為には、それに尽きます。
そもそも、ネット情報は正しくない場合が多いということはもう皆さん周知の事実だろうと思いますし、わざわざネットで検索して、サイト選んで読んでみるのも時間が掛かり面倒なわけですし、サイトによって言ってることも全然違ったりする場合も、多いわけです。
一方、
「マクロの記録」なら、一発です! しかも、必ず正しいです! しかも、いつでもコードは一定です!
要するに、
「マクロの記録」で(機械で)書いたコードというのは、人間のような「気まぐれ」は一切無いわけです。
ましてや、個々のレベルによる個人差もありません。機械(マクロの記録)の良い点は、
いつでも、どこでも、誰にでも、同じ操作をすれば必ずいつも同じ、一定のコードを書いてくれます。
だから、その都度新たに勉強する必要がありません!
一方の、
人間というのは大変「気まぐれ」なので、同じ人であっても書くコードは気分によって毎回違いますし、
ましてや、
人それぞれのレベルや書き方やスタイルによって、てんでまちまち、書く人によってコードは実に「ばらばら」です。同じものは二つとありません。
だから、人間の書いたコードを捜して、それ「丸写しして、コード読んで、理解して、修正して使おう」とすればその都度、知らないコードを散々ネットで調べて、「理解しよう、どこを修正したら?」と散々格闘して・・・、それを余儀なくされるわけです。
多くのVBA先生達が、「VBAの難しい構文を理解しろ!」「他人の書いたコードを読めるようになれ!という発想で教えてる思いますが、
それだから、自分でマクロが組めるようにはならないし、いくら時間を使って勉強しても「何も作れない」のです。
そのような他人のコードを理解することなど、私のようなベテランSEの余程のプロであっても難しい事なのです。
他人のコードを理解する時間があったら、一から自分で作った方がよっぽど完成速い言うのが、プロの世界の常識事であります。
マクロのプログラム(自動化の手順)は、「自分の組み立てたロジック(処理の手順)で作る!」その考え方こそが、プログラミングには絶対的に重要です。
その為には、前回言ったCADユーザーは「コマンドの記録」をうまく利用して、それを組み上げて操作自動化してきたという長い歴史に従ってマクロを組むわけです。それしかない!
今日の話のまとめですが、
「マクロの記録」を使うべき理由は、いつでも「一定」だからです。すなわち、それは「安定」「安心」を意味します。
人間の書いたコードは、個人差激しく「嘘や間違い」も多く、「やすやすと素人なんかに解読されたくない」という悪意も渦巻き、利用する側にとって「不安定」が激しいわけです。
なので、そのように「気まぐれ」な人間の書いたもの(他人のコード)に頼るのではなく、「安定」した「マクロの記録」を存分に利用して自分で組み上げたコードで、マクロは作るのです。
でないと、
その人間の「不安定さ」にいつまでも振り回される事になりますので、それは多大な時間を失い続けることになりますので、くれぐれもご注意ください。
ちなみに、
冒頭の問題を素早く解く為の「マクロの記録」の手順ですが、
1.「マクロの記録」を開始する
2. B2のセルを選択する
3. セル書式画面を開いて、[表示形式]の[分類]の[日付]で[カレンダーの種類]で「和暦」を選んで[OK]
4.「マクロの記録」を終了する
です。
ネットで検索するよかずっと速い!ですよね。気になる人は、試しに上記やってみてくださいネ。
本日は、以上です。
こちらのブログやメルマガ講座で勉強を始めた者です
もっともっと難しいものだと思っていたのですが、
マクロの記録を使って、簡単でも業務改善ができてうれしjく思っています
1つ質問させてください
その、マクロの記録ではできないのではないかと思うものがあります
今作りたいものが
「フォルダー内にあるエクセルの全データの全シートを一括出力する」というものですが
このような場合は、どうしたらよいかがわかりません
開けている1つのデータの中で
全シート選んでデータを閉じる
ことはマクロの記録を使ってできるようになりました
が問題は、フォルダー内のデータ全部を自動的に開けて指示を与えて、次にファイルへ進める ということです
長くなってすみません
三太郎式でぜひ作りたいので教えていただけませんでしょうか?
よろしくお願いいたします