大村あつしさんのVBA書籍には今もお世話になっています。
かつて紹介しました以下の書籍も大村あつしさんの著書です。
かんたんプログラミング Excel VBA コントロール・関数編
さて、今回紹介する書籍は、小説でExcel VBA を学ぶという野心作です。
Wordマクロをある程度書いたことがある方やVBEに登録したことがある方だと、「なるほどー」と思いながら読めると思います。
なんとなく使ってきたVBEの機能の復習にもいいかもしれませんし、メソッドやプロパティの意味の確認にも役立つと思います。
覚えることは必要な部分だけ
私もセミナーで心がけていますが、「相手が必要ないのであれば教えない」というスタンスは重要だと思います。
Wordの機能も私の開発したアプリケーションにもたくさんの機能がありますが、その機能を必要としていない人にとっては邪魔以外のなにものでもありません。
その邪魔な機能やボタンの説明で混乱を招くようであれば、その機能については触れもしない、ということはセミナーで重要だと思って心がけています。
この書籍でもその点はかなり徹底されています。
たとえば、P.73のモジュールの解放の説明は、以下のようになっています。
上記のダイアログボックスが表示された場合の、「Excel VBAの神様」こと白百合さんの言葉です。
「・・・まず結論から言う。そのダイアログボックスでは、[いいえ]ボタンを選ぶんだ。今後一生、[はい]ボタンを選ぶことはないと思え」
表示されるダイアログボックスで[はい]と[いいえ]を選択する場合、考えなければならないことがあります。
この選択のため背景説明をするとさらに説明が長くなって、もともとの解説の趣旨からずれてしまうことがあります。
今回は、不要なモジュールを削除する(解放する)説明なので、上記の説明で十分です。私も同じようにセミナーで説明しています。
Microsoft Outlook MVP のきぬあささんの書評 に書かれていましたが、この書籍は「人にVBAを教える立場の人の参考になる」と思います。
入力候補の表示が便利
VBEでプログラムを書いている時に自動メンバー表示機能を使われている方も多いと思います。
オブジェクトの後にピリオドを入力すると、用意されているプロパティやメソッドのキーワードが表示されたり、プロパティの後にイコールを入力すると、プロパティの値の候補が表示されたりする機能です。
以下の例では、activedocumentと入力した後にピリオドと r を入力したところ、 r で始まるキーワードが列挙されています。
多くの方がこの機能のお世話になっていると思います。
私のセミナーでも、表示された候補から選択して入力することをお勧めしています。
自分で入力するのは時間がかかりますし、さらに入力ミスも出てしまいますから。
さらに便利な機能があります。入力候補です。(P. 85)
上記の場合、ピリオドやイコールを入力しないと候補が出てこなかったのですが、文字列の入力途中でも候補を表示させる方法があったのです!
私は本書にてこの機能を知りました。VBAを学ぶという観点からすると、この機能を知ったことが本書での最大の学びでした(笑)。以来、かなりお世話になってます。
例えば、よく使うActiveDocument のオブジェクトですが、これを入力するのがけっこう手間です。
ところが、最初の3文字(act)を入力後に[Ctrl]+[スペース]を押下すると、なんと以下のように候補が表示されるのです!
さらにさらに、オプションの値も候補が表示されます。
オプションの型が指定されていない場合には定数が自動メンバー表示されない(参考記事:【VBE】定数が自動メンバー表示される?されない?)ので手入力していましたが、この[Ctrl]+[スペース]を使えば候補を表示できてしまいます。
入力候補の最初の文字列をうろ覚えしておく必要はありますが。
値を返さない場合には、引数は括弧で囲まない
VBAに慣れないと、このタイトルが何のことを意味するのかわからないかもしれませんが、これ重要です。
本件は、Microsoft Excel MVP の伊藤潔人さんの「インストラクターのネタ帳」 でも時々取り上げられています。
「マクロの記録」機能でコードを自動生成すると、メソッドの引数が括弧で囲まれてしまうことがあるので要注意です。
たとえば、テキスト形式での貼り付けです。Word 2010で記録すると以下のようになります。
Selection.PasteAndFormat (wdFormatPlainText)
上記の貼り付けのメソッドでは値を返すわけではないので、この括弧は不要です。正しくは以下の通りです。
Selection.PasteAndFormat wdFormatPlainText
上記の例は文法的に正しくないのですが、動作は問題ないし「マクロの記録」機能で記録されるので正しいと思われがちな記述です。
かつては私も間違えておりました。私のブログにも間違った記述が残っていると思います。すみません。
本書のP. 142 にMsgBox関数の例で解説が載っていますのでご覧ください。
本書には重要なヒントがちりばめられています。意味がわからない場合にはネットで調べながら読むとさらに理解が深まると思います。
知識の整理におすすめ
すでにVBAになじんだ方でも、主人公の「気づき」からヒントが得られるかもしれません。
主人公のさりげない心のつぶやきが、かなり高度な解説になっていますので(笑)。
本書にはWordマクロのサンプルは出てこないので、ある程度Excel マクロをご存じの方だとサンプルマクロを理解しやすいと思います。
<目次>
関連記事
「Excel VBAの神様 ボクの人生を変えてくれた人」(大村あつし著)レビュー (きぬあささんの記事)