Office関連

「いちばんやさしいExcel VBAの教本」レビュー

VBAの学習者であれば一度は見たことがあるであろう、超有名老舗サイト「インストラクターのネタ帳」の伊藤さんが執筆されたVBA解説本、「いちばんやさしいExcel VBAの教本」がついに発売開始されました。

概要

本書の目次は下記の通りで、サンプルコードも下記ページからダウンロードできます。

Chapter 1 マクロの学習を始める前に
Chapter 2 マクロを実行してみよう
Chapter 3 はじめてのマクロ作成に挑戦しよう
Chapter 4 VBAの演算子と関数について学ぼう
Chapter 5 変数について学ぼう
Chapter 6 条件分岐について学ぼう
Chapter 7 ループ処理について学ぼう
Chapter 8 オブジェクト関連の文法を学習しよう
Chapter 9 マクロ記録を活用しよう
Chapter 10 Rangeオブジェクトについて学ぼう
Chapter 11 Worksheetオブジェクトについて学ぼう
Chapter 12 複数のシートをまとめるマクロを作成しよう
Chapter 13 Workbookオブジェクトについて学ぼう
Chapter 14 今後の学習に向けて

https://book.impress.co.jp/books/1116101132 より
(2018/1/20 時点では、上記ページの「Chapter 5」の記述に誤りがあります。)

出版社のページにも書かれていますが、本書は“講義+実習のワークショップ形式の学習書”であり、『ただ読んで終わり』というわけではなく、読んで実際に手を動かして学習を進めていく必要があります。

もちろん、マクロとVBAの違いやVBAを学習する意味といった、基礎的な知識・考え方の説明や、開発環境であるVBEの説明も丁寧に書かれているので、初めてVBAに触れる方でも戸惑うことなく読み進めることができるようになっています。

本書は、伊藤さんがご自身のサイトで書かれている通り、伊藤さんが開催されているVBAセミナー「ビジネスパーソンのためのExcelマクロ入門講座」をベースに構成されています。

そのため、VBA学習者(特に初めて学習される方)がつまづきやすいポイントが押さえられており、まさに『いちばんやさしい』VBAの入門書だと言えるでしょう。

「いちばんやさしいExcelVBAの教本」のここがポイント!

本書を読んで私が良いと思った点を下記にまとめてみました。

解説が丁寧である。

上でも書きましたが、本書は『ただ読めば終わり』というタイプの本ではありません。
解説を読む→実際にコードを書く→書いたコードを動かす、というサイクルを繰り返して学習していく教本です。

何事も“実際に手を動かす”ことによって理解が深まって身に付いていくものですが、本書ではコードの説明はもちろん、コードを動かす際の手順も詳細に書かれています。

たとえば、Chapter 3でマクロを作成するところでは、「VBEでCtrl+Sキーを押す→[名前を付けて保存]ダイアログが表示される→保存先フォルダーとしてデスクトップを選択」といった具合に、慣れている人からすれば「こんなことまで書く必要あるの?」と思うくらい細かいところまで解説されています。

セミナーと違って学習者に直接説明できない分、詳細な説明文にしているのでしょう。
下記VBEの説明も含め、伊藤さんがセミナーで培われたノウハウが詰まっているのだと思います。

VBEの使い方もきちんと説明されている。

本書は、開発環境であるVBEの説明にもしっかりとページを割いています。
起動方法や各画面の説明はもちろんですが、コードウィンドウのフォント変更方法や自動メンバー表示機能、ローカルウィンドウの使い方等も記載されており、最初の段階で知っておくとコーディングしやすくなる事柄がよくまとめられています。

つまづきやすい部分の説明を大胆にカットしている。

本書では、RangeやWorksheetといったオブジェクト、CellsやWorksheetsといったプロパティの解説もされています。

ただし、これらの説明の一部は厳密には正しくありません。
例えばCellsプロパティの説明として、下記のように書かれていますが、

Lesson 46~47で学習したように、第1引数には行番号を、第2引数には列番号を表す数値またはアルファベットを指定します。「Cells(1, "A").Select」を実行すると、A1セルを選択できます。

Chapter 10 p.218 より

実際には、Cellsプロパティから返ってくるのはRangeオブジェクトであり、Cellsプロパティに引数はありません。

Rangeオブジェクトの既定のプロパティ「_Default」に引数を与えることで「Item」プロパティとして動作し、その引数として指定されたインデックスのセルを取得しているわけですが、こんな説明をしても、読者、特に初学者の方にとっては混乱を招くことになるだけでしょう。

Worksheetsプロパティも同様です。

すべてのワークシートを表すWorksheetsコレクションオブジェクトを取得するには、Worksheetsプロパティを使用します。

Chapter 11 p.247 より

一見すると、Worksheetsプロパティからは「Worksheets」コレクションオブジェクトを取得できるように思えますが、Worksheetsプロパティだけでなく、SheetsプロパティやChartsプロパティなど、シートからなるコレクションを返すプロパティはすべて「Sheets」コレクションオブジェクトを返すため、Worksheetsプロパティで取得できるのは“すべての「ワークシート」を含むSheetsコレクションオブジェクト”になります。

このあたりの理解は非常にややこしいため、上記のように説明を大胆にカットし、「オブジェクト名.プロパティ」について、初学者が理解しやすいような書き方になっています。

このことは、Chapter 10でも下記のように触れられています。

このChapterでは「Cells、Rows、Columnsプロパティの引数」といった解説を行ってきましたが、この解説は厳密には正しくありません。本当は、Cells、Rows、Columnsプロパティが、引数を指定できないプロパティだからです。
しかしCells、Rows、Columnsプロパティに引数を指定している(ように見える)コードを、学習してきました。これが何かというと、Rangeオブジェクトの規定のプロパティの引数を指定している状態です。
入門者が、このことを理解しようとすると、非常に難易度が高くなるため、本書では厳密には正しくない解説をしてきました。厳密には正しくない理解のままでも、マクロを作成する上で困ることは、ほとんどないでしょう(私がマクロを作るときにも、厳密には正しくない理解しやすい形を想起してコードを書いています)。
Rangeオブジェクトの規定のプロパティの学習は、オブジェクト関連の文法がかなりわかってきたと、実感できてから行うことをおすすめします。オブジェクト関連の文法の中で、もっとも難しい部分のひとつだからです。

Chapter 10 p.244 より

まとめ

これまで書いてきた通り、本書は伊藤さんがセミナーで培われたノウハウをベースに、初学者の方でも戸惑いなく学習できるよう構成されています。

そのため、ある程度VBAに詳しい方からすれば、すでに知っていることが多い内容になりますが、初学者を意識して書かれている分、『VBAを人にどう教えれば良いか?』という視点でみると、参考になる部分も多いと思います。

「これからVBAの勉強を始めてみよう!」という方だけでなく、企業の情シス担当者やOfficeインストラクターの方など、人にVBAを教える立場にある方も、本書を手に取ってみてはいかがでしょうか。

それなりに大きい書店であれば、今なら店頭に並んでいると思いますので、まずは試し読みされることをお薦めいたします。
(伊藤さんのサイトで、書店の在庫確認用リンクがまとめられていますので、こちらもご参考に。)

おわりに

本書の出版にあたり、実は私も少ーーしだけお手伝いをさせていただきました。
(VBAに造詣が深いthom氏もレビュアーとして参加されています。)

もちろん、執筆されたのは伊藤さんなので、私は何もしていないに等しいのですが、ほんのちょっとでも携わることができた本がこうして無事に出版されるのを見ると、非常に嬉しいものです。近所の本屋さんのIT本コーナーでもついつい探してしまいます。

続刊が出るかどうかはまだ分かりませんが、きっと出るでしょう!
今から楽しみにしております!!

関連記事

  1. Office関連

    SmartArtからテキストを取得するPowerPointマクロ

    Twitterで@terrysaitoさんが下記のようなツイートをされ…

  2. Office アドイン

    [Officeアドイン]テーブルやグラフを作成する方法(Excel)

    お久しぶりのOffice アドインの記事です。注目している人はほと…

  3. Office関連

    1MBのWordファイルって何文字くらい?

    ZIP圧縮されたOOXML形式のWordファイルって1MBだと何文字分…

  4. Office関連

    Acrobatを使ってPDFファイルをNアップするVBAマクロ

    VBAで、B5サイズのPDFファイルを横並びにしてB4サイズのPDFフ…

  5. Office関連

    [Excel Services ECMAScript]ActiveWorkbookのシート数を取得す…

    埋め込んだExcelワークブックのシート数を取得するコードです。 …

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP