実は、当講座のWebページには、マクロのこんな問題も載っています。
これ、基礎編が10問、プログラム編が10問、上級編が7問、合計で27問の手軽にできる3択形式(一部4択あり)の問題構成になっています。
この秋に実施した「マクロ検定」の場合は、まさしくあれは真剣勝負でしたが、これは、まぁただのお遊び、です。(笑)
もしお時間あったら、暇潰しのゲーム感覚で、ぜひトライしてみてくださいね。(3問目にはヒントも載ってますよー!)
なお、最後の【上級編】のほうは、VBA上級者を自負する皆さん向けの、情報処理試験も加味した出題内容にて、コンピュータ全般の正しい基礎知識を知ってもらう為の内容となっていますので、我と思わん上級者の人はぜひこれチャレンジしてみてください。(※決して初心者向けの内容ではありませんので、その点ご了承ください。)
それで、これら問題の中から一つご紹介しますと、
【基礎編】問題8.
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
初心者がマクロのプログラムを作る上で最も効率的な
作成方法とは次のうちどれでしょうか?
1. とにかく一から自分で書く
2. Webで例文を探してコピーして直す
3. 「マクロの記録」+ちょっと修正&追加する
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
これは、上記の3択問題です。(上記Web上で一つ選んで下の「判定ボタン」を押してください。)
ここの読者の皆さんならこの答え、もうお解りですよね!?このメルマガでも何度も言ってきましたが、この3択の
1番目は、いわゆる「ゴリ書き」で、
2番目は、「サンプルコード好き」です。
このどちらも、プロSEの私が最も嫌うやり方だと何度も言ってきましたね。
そんな、プロのプログラマーでもやらないやり方を、素人の皆さん方がやったら、絶対いけませんよ!
なので、この答えは当然ながら3番目の
「マクロの記録」+ちょっと修正&追加する
これになります。これしかないわけです。
これこそが、
私がマクロを始めた頃(30年前)から脈々と語り継がれる「正しいマクロの組み方」であります。
VBA本でよく見られる「マクロ記録は使わず Sub から自分で一から書け」とか、「ネットでサンプルコードを探してそれ直して使え」とか言ったやり方は、まるで素人発想でしかないわけですから、絶対にそれに騙されてはなりませんよ!
ましてや、
「マクロの記録」で記録されたコードは"読む"ものなんかでは決してありませんから、読んでコード理解しようなんてやったら、絶対にいけませんよ!!
この講座で教えてるように、直すべきところだけを見極める能力を身に付けて、それを「ちょっと修正&追加」でマクロを組み上げていく為の道具が、「マクロの記録」であるわけです。
その辺の基本事項は、皆さんもうよろしいでしょうか。
ついでにもう一つ、
【プログラム編】問題4.
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下は、B1のセルにOK!と表示させるためのプログラム
です。Macro1のみを1回実行してB1のセルにOK!と表示
させるためにCall文 「Call Macro2」を挿入する位置
として正しいのはどこでしょうか?
Sub Macro1()
[1]
ActiveCell.FormulaR1C1 = "OK!"
[2]
End Sub
Sub Macro2()
Range("B1").Select
[3]
End Sub
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
挿入位置が、上記の[1]or[2]or[3]の3択問題です。
この出題は、このように何かの一文をプログラム中に挿入する際に、初心者の人は「何処に入れたらいいのか?入れる位置が分からない」ということがよくあるかと思います。
これも、先ほど言った「マクロの記録」を活用したやり方の場合では、必ず
Range("B1").Select
ActiveCell.FormulaR1C1 = "OK!"
このような記録がされるわけですから、すなわちこの2行は、
場所(セル)を選んで
書き込む
という、Excelの”基本操作通り”のプログラムがちゃんと出来ているわけです。
だから、この問題の答えも至って単純明解ですね。
しかし、VBA本やネット上によくある書き方だとこれを、
Range("B1").Value = "OK!"
と、大概はこう書いてあるわけです。これだと、普段のExcelの操作通りの、
場所(セル)を選んで
書き込む
とはなっていないわけですから、ExcelとVBAとがかい離してしまってて余計に難しく複雑化します。
それ故に「何処に入れたらいいのか分からない。」という初心者が多い始末になってしまっています。
Excelのユーザーである皆さんは、VBAのプログラムも、普段のExcelの操作の通りに書くようすれば、単純明確に、簡単に、より理解がし易い言うのは、至って当たり前の話ですね。
「マクロの記録」では、わざわざそうなるようにと機械が書いてくれるわけなんですから、
何度も言いますが、「マクロの記録をいかにうまく活用できるか。」それこそが、マクロ習得には極めて重要になるわけです。
前者の(「マクロの記録」のー)
Range("B1").Select
ActiveCell.FormulaR1C1 = "OK!"
は、〇ですが、後者(本やネットに多い書き方のー)
Range("B1").Value = "OK!"
は、×です。この辺は、もうよろしいでしょうか。
ただ、私がこういうことを言うと「後者の方が1行でより短くてわかり易いじゃないか!」って、反論してくる人が必ず居る訳なんですが(笑)、それは違います。
理由はこちらに詳しくありますので、反論ある人はまず下記よく読んでみてください。
▼ YouTube再生45万回突破しました!