脱入門者のExcel VBA 自力でプログラミングする極意を学ぶ
立山秀利(著)
講談社
本の詳細
筆者は、VBAには入門→中級→上級というステップがあると考えています。そして、入門から中級へ向かうためのステップを「脱入門」と呼ぶことにします。本書では、その「脱入門」に必要なノウハウを学んでいただきます。上達への道筋を理解し、経験を積み重ねて中級者になっていく、という成長過程の第一歩を踏み出すための準備が本書です。
「脱入門」を果たして上達するためには、何を優先して学ぶべきか、いろいろなアプローチがあります。筆者は次の「3つの力」を習得していただくのがベストと考えています。
- 複雑な処理手順でも問題点を見つけて修正する力
- 処理が速いプログラムを書く力
- 状況の変化に対応しやすいプログラムを書く力
いずれも、オブジェクト/プロパティ/メソッドやステートメントなどをどれだけ幅広く深く知っているかという”知識”ではなく、それらをいかに使いこなすかという”ノウハウ”に重点を置いています。
1章では最初に、先述の「3つの力」を中心に、VBAで「脱入門」を果たすために何が必要かを学びます。本書は基本的に、拙著『入門者のExcel VBA』をすでにお読みの方々を対象としていますが、それ以外の入門者レベルの方々も対象としています。そこで「入門者」のレベル確認もこの章で行います。
2章では、作例をゼロから作成し、必要となる機能をひととおり完成させます。この章では「3つの力」についての具体的な学習には取りかかりませんが、なぜそれらを身に付ける必要があるのかを実感していただきます。
3章から「脱入門」の本格的な学習に入ります。この章ではまず、「3つの力」の1つ目である「複雑な処理手順でも問題点を見つけて修正する力」について学びます。その力に欠かせないVBEの「デバッグ機能」の使い方を中心に解説します。
4章では、1つ目の力と関連が深く、「脱入門」には必須となる実行時エラーへの対処方法を学びます。
5章では、「3つの力」の2つ目の「処理が速いプログラムを書く力」と3つ目の「状況の変化に対応しやすいプログラムを書く力」について学びます。それぞれに必要な考え方、および具体的なコードの書き方を学習します。
本書の学習を終えた頃には、読者の皆さんは「3つの力」を身に付け、「脱入門」を果たせるようになることでしょう。
目次
必ずお読みください
はじめに
1章 “入門者”から“脱入門者”へステップアップするには
[1.1] Excel VBAの“入門者”ができること
- どこまでできるのが“入門者”?
- “入門者”が忘れてはならない大原則
[1.2] “脱入門者” へのステップアップに必要な「3つの力」
- 本書で学べる「3つの力」とは
- “脱入門者” レベルに到達すると、その先に何が見える?
[1.3] 本書の学習に用いる作例について(転記処理に用いるブックやデータについて)
- 作例で自動化する処理について
- 転記元ブックとファイル形式について
- 転記先ブックについて
- 本作例で作成する機能について
- 次章以降、どのように学んでいくのか
コラム
- CSV形式の詳細
2章 データを転記する処理を作成しよう
[2.1] 完成までの大まかな道筋を立てよう
- 段階分けに有効な3つの切り口
- 本書作例を段階分けしてみよう
- 作例の準備をしよう
[2.2] ブックを開く処理を作成しよう
- まずはSubプロシージャを用意
- VBAでブックを開くには
- ブックを開くコードを記述する
- ブックの保存場所を同じフォルダーに変更
- この先、改善すべき点の確認
[2.3] 単一のブック/ワークシートへデータを1 件転記
- ブックをまたいでセルを扱うには
- 日付のデータを転記しよう
- 残りの列も転記しよう
[2.4] ワークシートの記述をまとめよう
- オブジェクトの記述をまとめる
- コードを整理しよう
[2.5] データの内容に応じて転記先を決める
- エリアと営業所に応じて転記するには
- 該当するブックとワークシートに転記されるように、コードを変更
[2.6] 複数のデータを転記しよう ~その1
- セルをCellsに書き換えておこう
- For…Nextステートメントによるループ化
- データが同じ行に上書きで転記される問題
- プログラミングにつきまとう「落とし穴」
[2.7] 複数のデータを転記しよう ~その2
- 同じ行に上書き転記されないように記述する考え方
- Endプロパティで「最終行」を求める
- 転記先の行を求める処理
- コードを修正しよう
- ワークシートの「最終行」の番号を自動で取得
[2.8] 開くCSVファイルを選べるようにしよう
- 「ファイルを開く」ダイアログボックスを使うには
- コードを追加・変更してみよう
- コードをさらに追加・変更
- 2日目のCSVファイルを取り込むと表示されるエラー
- エラーを回避するための修正
- エラーの原因を効率よく調べたい
コラム
- 練習用Subプロシージャを用いて事前に動作確認する
- 2日分のCSVファイルを連続して取り込む
3章 VBEのデバッグ機能を使いこなそう
[3.1] デバッグとは
- コードをチェックする2つのポイント
- デバッグ機能を使う準備をしよう
[3.2] デバッグ機能で「処理の流れ」をチェックする
- 途中で中断し、1行ずつ実行できる
- ブレークポイントを設定しよう
- ステップインで1行ずつ実行しよう
- ステップインを繰り返して最後までチェックする
[3.3] 「ポップアップ」で変数の値をチェックする
- 「ポップアップ」とはどんな機能か
- ポップアップ機能でチェックしよう
- ポップアップ機能を使ううえで覚えておきたいこと
[3.4] 「ウォッチウィンドウ」で変数やプロパティなどの値をチェックする
- 「ウォッチウィンドウ」とはどんな機能か
- ウォッチウィンドウに変数やプロパティを登録する
- ウォッチウィンドウで値をチェックしよう
[3.5] 実際にデバッグしてみよう(ケーススタディ1)
- デバッグ機能で誤りの原因を「見える化」する
- あえて誤りを設ける
- デバックの進め方〜(1)問題の箇所を探る
- デバックの進め方〜(2)原因を探る
- コードを修正する
[3.6] 実際にデバッグしてみよう(ケーススタディ2)
- あえて誤りを設ける
- デバックの進め方〜(1)問題の箇所を探る
- デバックの進め方〜(2)原因を探る
- コードを修正する
- デバッグ機能はプログラミングの上達に欠かせない
コラム
- ブレークポイントの設定に関して
- デバッグの実行中にウィンドウを切り替える
- 実行時エラー
- デバッグにおいて覚えておきたい操作方法
- この他の変数やプロパティなどの値をチェックする機能
- デバッグ機能は、自分以外の人が作ったプログラムの解析にも役立つ
4章 実行時エラーが表示されないように対処する
[4.1] 実行時エラーについて知ろう
- 実行時エラーの問題
- 実行時エラーは大きく分けて2タイプある
[4.2] 発生を把握できる実行時エラーへの対処例
- ユーザーが選択する操作次第で発生するエラーを防ぐ
- 分岐の処理をデバッグ機能で追ってみよう
[4.3] 発生を把握できない/把握できても発生してしまう実行時エラーへの対処例
- On Errorステートメントによる、エラー発生後の対処
- On Errorステートメントを使ってみよう
- プログラムの問題点を見つけて修正する経験を積んでいこう
コラム
- On Errorステートメントだけで対処はできるが‥‥
5章 処理が速く、あとで変更しやすいプログラムを実現する
[5.1] 「処理が速いプログラム」を実現する記述方法を学ぶ
- 「処理が速いプログラム」を書くのに必要な2つの視点
- 命令文の実行回数を必要最小限にする
- より速い命令文を使う
- 2つの視点で「処理が速いプログラム」となるようにチェックする
[5.2] 変更しやすいプログラムに欠かせない「コメント」
- プログラムにコメントを入れる目的
- コメントの記述方法
- コードを変更したら、あわせてコメントも更新する
[5.3] 処理対象の数や名前の変更に対応できる記述
- 「処理対象が変更されても対応できる記述」とは
- 数や名前を用いて直接記述する箇所にはどのようなものがあるか
- 作例のプログラムで修正できる箇所をチェックする
- ブックの名前が変更されても対応できる記述にする
- ブック数の変更に対応できる記述にする
- Withステートメントで見やすくする
- 数や名前を直接記述している箇所を極力減らす
[5.4] セル範囲の位置変更や列の順番入れ替えに対応しやすくする記述
- セルに関する記述が多い分、数を直接記述する箇所を極力減らす必要がある
- 前節で修正した「数で直接記述する箇所」と今回のケースの違い
- ユーザー定義定数の基本
- ユーザー定義定数に置き換えられる箇所をチェックする
- ユーザー定義定数を宣言する
- 数で直接記述している箇所をユーザー定義定数で置き換える
- ユーザー定義定数に置き換えたあとの動作確認
- 定数の定義に定数を用いて列を相対的に指定
- ユーザー定義定数を用いて「変更しやすいプログラム」を実現
コラム
- 「処理が速いプログラム」を実感できる場面
- より速い命令文について、その他の情報
- 空の行を入れてプログラム全体を見やすくする
- すでに処理対象の変更に対応できるように記述されている箇所
- 同じ変数名を異なる目的で使用するのは避けよう
- 「同じ記述をまとめる」の他の方法
- 定数と変数の違い
- 定数名のつけ方について
- コードを大きく変更する前はバックアップしよう
- 列方向、行方向に移動が生じた場合の変更箇所
- 文字列も定数化できる
おわりに
作例のブック一式のダウンロードについて
巻末付録
- CSVファイルを開かずにデータを読み込む
- Excel VBA基本書式一覧
さくいん
脱入門者のExcel VBA 自力でプログラミングする極意を学ぶ
立山秀利(著)
講談社