半年以上前に入手したタカハシさん著の「パーフェクト Excel VBA」ですが、ようやく読み終わりましたので読書感想文を書かせていただきます。
私は本が苦手です。
読書感想文の前にちょっと自己紹介させて下さい。
私は本が苦手です。普段から読書をしません。
どのくらい苦手かと言うと、学生時代夏休みの課題には決まって読書感想文というものがありました。
私の通っていた学校では、小中高全てでありました。
本当に自慢にもなりませんが、読書感想文を一度も提出したことがありませんでした。
忘れたわけでも、提出が遅れたわけでもなく、一冊も本を読みきれなくて書けませんでした。
ところが、パソコンを使うようになって、私の生活は一転します。
音声付き最高級紙芝居をプレイしたり、二次創作小説を読んだり、ニュース記事を読んだり、プログラムの長い解説文を読んだりできるようになりました。
スマホが登場して更に変わりました。
「縦書きだから読めないんだ」と言っていたはずの、小説(ラノベですが)も電子書籍で読めるようになりました。
私は「長い文章」が読めないのではなくて、「紙媒体の長い文章」が読めないのだということにようやく気が付きました。
以前、はけた氏のピボット本が読めたのは、図がメインで目的毎の短い文章だったからからなのでしょう。
しかし今回の「パーフェクト Excel VBA」は570ページもあります。
予想通りモチベ込みで時間はかかりましたが、どうにか読み切れましたので感想文を残しておきたいと思います。
その前に・・・
これまでの私のVBA学習法
先の通り私は読書が苦手です。VBAはネットとヘルプを頼りに完全に独学で身につけました。
初めの1年くらい
インターネット検索ができませんでした。兎に角ヘルプとマクロの記録だけが頼りです。
当時(Excel 2003/2007)のヘルプは、今と違ってオフラインで、もっと使いやすいものでした。
VBEの各種便利な機能(オブジェクトブラウザ・ローカルウィンドウ)を知らず、オブジェクトツリーを覚えるのに苦労していました。
だから、上記に加えてこんなことをしてました。
- ほぼ全てのオブジェクト操作とかの行にコメントを書く
- 何でもかんでも独自関数を作る
- モジュールの分割方法を試行錯誤する
これ自体は無駄だったとは言い切れない気がしています。
スラスラ書けるようになってから
1年も経てばHSP
よりも自然に書けるようになり、HSPの下書きはなくなりました。
特に「目的物」が「自分の仕事の中から生まれる」ようになってからの成長スピードは早かったです。
- Excelの作業で課題を発見する
- 適当にイメージ・フローを描く
- コーディングを開始
- 分からない事はネットで検索
- マクロを完成させる
本業を進めながら、この流れを1日~1週間の単位でひたすら繰り返しました。
もちろん、依頼を受けて作ったものもありますが、一つ一つを作り上げるのがメインでした。
ここ数年
最近もネット検索しますが、自分のイメージが適切かどうかの確認で使うことが多くなりました。
ネットの情報は、そのままでは記法・考慮漏れが多いため、ほとんど使うことが出来ません。
代わりに増えてきたのは、このような物事です。
- 関数を極限まで抽象化しライブラリを作る
- 質問サイトで適当に答える
- Twitterでつぶやく
- ブログを書く
従来との決定的な違いは、他人とやり取りすることで基礎知識の欠落が次々と表面化したということです。
同じ目標物に対して、様々な書き方のソースコードに目を通すようになりました。
そんな中で出会ったのが、「パーフェクト Excel VBA」です。
パーフェクト Excel VBAの効果
最後まで読んだ感想としては、独学だと網羅するのに10年かかるようなものに数日で気がつくことが出来るという点が心底偉大と感じました。
というか10年やってても、気がついていなかった事も書いてあったりします。
「目的物を決める」>「ネットで調べる」>「完成させる」この流れは、極めて有効な学習法だと感じていますが、どうしても知識が偏ります。基本中の基本が歯抜けになります。
「ネットで調べる」という行為は、「分からない」と自覚できたものしか調べません。
体系的に学習できるWEBサイトをイチから通して読んだ人なら、私よりはマシかと思いますが途中で寄り道して投げっぱなしになってしまうかもしれません。(なった覚えがある・・)
だから、私のように独学でネットでVBAを身に着けた人には是非ともオススメしたい一品でした。
いわゆる「VBA完全に理解した\(^o^)/」という人に、布教して是非読んで頂きたい。
読み方としては、1度は最初から最後まで順番に読んで行くのが良いと思います。
理解できないところは読み流してしまっても良いと思います。でも、数カ月・数年して、経験を積んだ後に読み返すと、新たな発見が得られるはずです。
私自身も、来年にはもう一度読み返したいと思いました。
Twitterひとりごと抜粋
ここから先は、読書しながらつぶやいた一部を抜粋したものです。
雰囲気だけでも参考になれば幸いです。
debug.printの引数は何か。 仕様を見たことが無かった。 全て感覚でやっている、、、
ステートメント の単語の意味とは
宣言セクションなんて言葉があったのね
eraseって複数の配列を初期化出来たのねー。 あまり使わないから知らなかった。
コメントアウトを解除することをコメントインと言う。 な、なるほど
マイナーなはずのremちゃんが紹介されている!!!
P49 Currencyは1万倍して計算している。 型宣言文字はアットマーク。 存在は知ってるけど、意識して使い分けたことがない。
P52 この前もちらっと見かけた改行コードの話。 vbNewLineってMacだと 13なのか。
P54 >エラー値を生成するにはCVErr関数を使用します。後で研究しないと・・。
P56 算術演算 >SingleとLongの組み合わせのときのみDoubleになる。 マジかよ。
P59 Like演算子のパターン ># 任意の一桁の数字 >※全角数字もマッチ
げげっ・・・半角数字だけを期待してるのに#で判定してるところあるかも。 あとでソースコード読み返そう・・。
公式のHelpには、古今東西そのような事は一切書かれていませんでした。
P60 論理演算子 EqvとImp使ったこと無いんだけど、これコーディング中にぱっと浮かぶ人いるの???
P62 演算子の優先順位 マイナス符号よりもべき乗のほうが順位上だったのか・・ 普通、くっついてる方が優先だと思わない???
Debug.Print -2 ^ 2 の実行結果がなんで-4なんだよ!!!
p.103 selectって文字範囲の指定も出来たのか!!!これは知らなんだ!
p.192 ThisWorkbookって名前変えれたんか! 変えようと思ったこともなかったw
p.203 正直に言うね? 私・・タブオーダー使ったことなかった。 プロパティの値を直接変更してた。 地味に面倒だった。
p.255 GetObjectの引数毎の挙動は知らなかった。
p.277 Randmizeって引数あったのか
p.289 Partition関数、QBcolor関数、知らない・・
p.292 メッセージボックスの既定のボタンって選べたんだなぁ これは知らなかった。Enter連打対策に使いたい。
p.372〜 あのクソ難しいrangeを丁寧に説明している・・!?
p.416 Range.SparklineGroups
まとめ
とても素晴らしい本を世に送り出していただき、著者の高橋宣成さま、本当にありがとうございました。
以上
何か御座いましたらコメント欄、またはTwitterからどうぞ♪
それではまた来週♪ ちゅんちゅん(・8・)