Home » いちばんやさしいExcel VBAの教本 » Excelマクロ入門書籍をたくさん見て驚いた

Excelマクロ入門書籍をたくさん見て驚いた

2011年に「ビジネスパーソンのためのExcelマクロ入門講座」を開催するようになって少しして、書店のExcel VBA本がたくさん並ぶコーナーで愕然とした記憶があります。

オブジェクトを取得・操作するコードを解説している入門書がない?

「オブジェクトを取得・操作するコード」について、真正面から解説してる入門書が見つからなかったからです。

書店にはExcel VBA関連書籍が、大量に並んでいるにも関わらず。

3つに分類できる入門者のExcel VBA学習項目のうち、「VBEの使い方」と「プログラミングに共通する考え方」について解説している書籍は、いくらでもありますが、「オブジェクトを取得・操作するコード」について、丁寧に解説している入門書がとにかく見当たらなかったのです。

多くの場合、オブジェクト・プロパティ・メソッド・コレクションという単語が並んでいる程度で、正しく解説していると感じられる書籍に出会えなかったのです。

入門書は情報の限定が大切だけれど...

入門書では、入門者向けに情報を絞ってあげることが、大切な役割です。

そのため厳密には正しくない解説を行うことも、ときには必要です。
基本項目であっても、一部の解説を省略することも必要です。

理解に時間のかかる「オブジェクトを取得・操作するコード」について詳細な解説を省く入門書が、一定数存在していることは想定できました。

しかし2011年当時、丁寧に解説している本を容易に見つけられない状況は、とても驚きでした。

オブジェクトを取得・操作するコードの何が解説されるべきか

何を書くべきかは最終的には著者次第なのでしょうけれど、コードに書かれているのはオブジェクト名ではなくプロパティやメソッドであることは、解説されるべきだと私は考えています。

現在の仕様にVBAが固まる、ずいぶん古い英語書籍ですが、『Microsoft Excel/Visual Basic Programmer's Guide』のChapter 4には、以下の記述があります。
Objects exists only in the memory of the computer; they don't appear in the code you write.
(強調は筆者)

「Worksheets("Sheet1").Range("A1").Value = 3」というサンプルコードのあとに、より具体的に以下の記述があります。
It's important to remember that the Worksheet and Range objects in this example never appear in the Visual Basic code - they exists only in the memory of the computer. However, the Worksheets method and the Range method, which return the objects, do appear in the code.
(強調は筆者)

現在の仕様に固まる前のバージョンですのでRangeやWorksheetsが「method」となっていますが、コードの中にオブジェクトが直接には書かれない、コードに現れているmethodがオブジェクトを返すことが、明記されています。

ちなみに同書籍の日本語版は残念なことに、この重要な箇所に致命的な間違いがあります。

Word VBA入門書なら存在している

なおWord VBAについては、上記のポイントが明示されている入門書を簡単に見つけられました。

Wordで実践 やさしくて役に立つ「マクロ」事例集』には、以下の記述があります。
処理したいオブジェクトを特定するには、オブジェクト名を直接書くのではなく、上位のオブジェクトが持っているプロパティを使って間接的に特定(参照)することになっています。

作って簡単・超便利! Wordのマクロ実践サンプル集』には、「Documents(2).Paragraphs(5)」というコードのあとに、以下の記述があります。
使っているのはプロパティ名だけで、オブジェクト名ではないことに注意してください。

以下のような記述もあります。
オブジェクトの特定にプロパティを使うという方法は、Wordのマクロで最も大切な仕様です。

オブジェクトを取得・操作するコードの文法は、Excel VBAでもWord VBAでもまったく同じで、Wordマクロ入門書には上記のような記述があるのに、Excelマクロ入門書では同様の記述を、2011年当時の私は見つけられませんでした。

実はオブジェクトを取得・操作するコードを理解できていない人が多い

「オブジェクトを取得・操作するコード」が丁寧に解説されているExcel VBA本が見当たらなくても、Excel VBAを使っている人はたくさんいます。

解説されている本なんかなくても、多くの人はマクロを作っているうちに、「オブジェクトを取得・操作するコード」について理解していくのかもしれないと、一時は思い込もうとしました。しかし決してそうではない、実はわかっていない人が多い現実が明確になったのが、2012-2013年です。

2012年7月に、Excelマクロユーザー向けのWordマクロ入門講座を開催したときに、オブジェクトについて自分でコードを書くなら必須のはずの、オブジェクトブラウザーを使っている方がほとんどいなかったことを、よく覚えています。

この時点ではVBEの機能が意外と使われていないのかもしれないと考え、VBEの機能だけに特化したセミナーを数回開催してみて、結局のところオブジェクトを取得・操作するコードの文法を理解できていない人がどうやら多いらしい、という結論に達しました。

このことに気づいて以来、Excel VBAのオブジェクトを取得・操作するコード = オブジェクト式について、解説するセミナー「Excel VBA講座 オブジェクト式解説編」を、繰り返し行うようになっています。このサイト「インストラクターのネタ帳」でも、その頃から、多くの人がオブジェクト式を理解できていないことを前提とした記事が増えています。

『いちばんやさしいExcel VBAの教本』の場合

2018年1月17日に発売となる『いちばんやさしいExcel VBAの教本』では、Chapter 8以降でオブジェクトを取得・操作するコードについて解説を行っています。

Chapter 8でオブジェクトを取得・操作するコードの文法を、Chapter 9でオブジェクトを取得・操作するコードのヒントを得るツールとしてのマクロ記録機能を、Chapter 10, 11, 13でExcelの代表的なオブジェクトである、Range、Worksheet、Workbookについて解説しています。

『いちばんやさしいExcel VBAの教本』は、基本的にはプログラミング経験のない、Excelユーザーを主な対象としているExcel VBA入門書ですが、Chapter 8以降については、Excel VBAの経験がある方にも興味深く読んでいただける部分が、かなりあるのではないかと考えています。

最終更新日時:2018-12-20 04:34

[スポンサードリンク]

Home » いちばんやさしいExcel VBAの教本 » Excelマクロ入門書籍をたくさん見て驚いた

「いちばんやさしいExcel VBAの教本」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.