目次
第1章 良いVBAのコードとは
1-1 そのVBAのコード,半年後の自分が理解できますか?
- 意図どおり動くコード,の次に目指すこと
- どこでなにをやっているかがわかりやすいか?
- 半年後の自分は他人
1-2 “良いコード”とはなんだろう?
- 良いコードであるための2つの条件
- 最初から良いコードを書くのは難しい
- [COLUMN]良いコードであるためのほかの条件
1-3 本書の読み進め方
- サンプルを“良いコード”にしていこう
- サンプルの機能の紹介
- サンプルのコード
- プログラムの中身をザッと把握しよう
- [COLUMN]「マクロの記録」で生成されたコードも整えよう
第2章 見た目にこだわる
2-1 理解しやすいコードは見た目も美しい
- 見た目を整える3つの基本的な方法
2-2 コードのまとまりをインデントしよう
- インデントを行う基準
- サンプルのインデントを整えよう
- 忘れずに動作確認しよう
- インデントの入れすぎに注意!
- [COLUMN]インデントに関する設定を変更する
2-3 まとまりごとに空行を入れよう
- 空行ひとつで見やすさアップ
- サンプルに空行を入れてみよう
- 転記の処理のまとまりをさらに際立たせる
2-4 1行が長いコードは適度に改行しよう
- 「 _」でコードの途中で改行
- サンプルのコードを途中で改行してみよう
- より見やすく途中で改行するには
- 1つのコードで何回途中で改行してもいいの?
- [COLUMN]半角スペースの挿入もVBEに任せればOK!
- [COLUMN]Valueプロパティは省略しないほうが吉
第3章 適当な名前を付けない
3-1 読みやすいコードは名前もわかりやすい
- 理解しやすさには名前も大切
3-2 プロシージャは機能がわかる名前を付けよう
- 機能が一目でわかる名前にしよう
- キャメル記法とスネーク記法
- サンプルのSubプロシージャ名を変更しよう
- マクロを登録しなおす
- 長いプロシージャ名は省略形にしよう
- 日本語のプロシージャ名はあり?
3-3 変数や定数は用途がわかる名前を付けよう
- わかりづらい変数名はNG!
- どんな名前にするかを考える
- 複数の単語を並べるときの順番
3-4 変数名を変えてみよう
- サンプルの変数名を書き換えよう
- 面倒でもバックアップを心がけよう
- [COLUMN]「コメントアウト」を活用しよう
- 一括置換する際は要注意
3-5 変数名の暗黙の了解
- カウンタ変数は必ず「i」にすべき?
- 変数名でよく使われる省略形
- 処理の前後,真偽,を表す変数名
- 日本語の変数名
- [COLUMN]フォームのコントロールもわかりやすい名前を
第4章 コメントを入れよう
4-1 たかがコメント,されどコメント
- コードの中に残しておく“メモ”
- VBAでのコメントの書き方
- コメントを残すべきことって何?
- [COLUMN]コメントを入れる際の注意点
4-2 サンプルにコメントを入れてみよう
- 宛名転記の処理にコメントを入れる
- “ハマりそうな罠”への警告をコメントする
- 処理の意図をコメントで残しておこう
- 繰り返しと分岐にもコメント
- 似たようなコードをコメントで区別する
- 「コードを読んだまま」のコメントはNG
- 削除してはいけない処理もコメントしておこう
- プロシージャ全体にもコメントをつける
4-3 ポイントとなる箇所にコメントを入れよう
- プログラムの大きな構成をコメントで示そう
- コメントを整えて全体の見通しをよくする
- [COLUMN]コメントから先に書くVBAプログラミングも有効
第5章 変数は必ず宣言して使おう
5-1 なぜ変数を宣言するのか
- 変数宣言のキホンをおさらいしよう
- [COLUMN]プロシージャレベル変数とモジュールレベル変数
- 変数を宣言すべき2つの理由
- 宣言していない変数を強制的に使えないようにする
- [COLUMN]Option Explicitを自動で挿入するには
5-2 本書サンプルで変数を宣言してみよう
- 2つの変数を宣言するコードを追加
- わざと誤った変数名で試してみよう
5-3 変数を宣言したことによる補完機能
- 記述の間違いをもっと早く知るには
- 入力補完で変数名の記述ミスを減らす
5-4 変数宣言時にデータ型も指定しよう
- データ型を指定すべき2つの理由
- データ型を指定しないとどうなる?
- なるべく毎回指定しておきたいデータ型
- その他の主なデータ型
5-5 本書サンプルでデータ型を指定してみよう
- 変数の宣言にデータ型の指定を追加する
- わざと誤ったデータ型で試してみよう
- [COLUMN]実行時エラー「型が一致しません」の示すコードが変わった理由
5-6 覚えておきたいオブジェクト変数のデータ型
- オブジェクトを入れる変数のデータ型
- [COLUMN]「どんな変数だっけ?」を素早く調べる
第6章 数値や文字列は定数に置き換えよう
6-1 なぜ数値や文字列を直接記述してはいけないのか
- 「異なる意味の同じ数値」はトラブルの原因
- 数値を定数化して問題を解決しよう
- 直接記述された文字列も定数化しよう
6-2 定数定義のキホンをおさらい
- 名前と値を指定して定義
- [COLUMN]定数じゃなくて,変数じゃダメなの?
6-3 サンプルで数値を定数化しよう
- 数値ごとに定数名を考えよう
- [COLUMN]定数はプロシージャレベル/モジュールレベルも考慮
6-4 定数を定義して数値を置き換えよう
- 請求書の表の先頭行番号を定数化
- 残りの数値も定数化しよう
- 定数定義のコードを整理してもっと見やすくしよう
- [COLUMN]「列の入れ替え」への対応を体験してみよう
6-5 文字列も定数化して変化に強くしよう
- 直接記述された文字列の問題と解決方法
- 文字列ごとに定数名を考えよう
6-6 定数を定義して文字列を置き換えよう
- まずは定数定義のコードを追加
- 直接記述された文字列を定数に置き換えよう
- 「異なる意味の同じ文字列」問題
- [COLUMN]定数化するタイミング
6-7 知っておきたい定数の知識やノウハウ
- 複数の列番号の定数化はどうすべき?
- 基準となる列番号の定数も加える
- 文字列の定数の値の定義に数値の定数を利用する
- [COLUMN]列挙型のキホン
第7章 共通するコードはまとめよう
7-1 何度も登場するオブジェクトをまとめよう
- オブジェクトの記述をまとめる2つの方法
- オブジェクト変数のキホンをおさらい
7-2 サンプルの重複するオブジェクトを変数にまとめよう
- オブジェクトをまとめる変数を決めよう
- サンプルで重複するオブジェクトを変数でまとめよう
- 階層構造のオブジェクトならもっと効果的
7-3 Withステートメントで重複をまとめる
- Withステートメントのキホンをおさらい
7-4 共通する処理はくくり出してまとめる
- サンプルの紹介(sample2.xlsm)
7-5 共通する処理をSubプロシージャにくくり出す
- Subプロシージャにまとめ,Callで呼び出す
- サンプルで重複するコードをまとめよう
- Callなしでもプロシージャは呼び出せるが
7-6 Subプロシージャの引数でちょっとした違いを吸収する
- Subプロシージャの引数の使い方
- Subプロシージャの引数を利用してコードをまとめる
- Subプロシージャの実行に関するルールのおさらい
- [COLUMN]なぜVariant型にするの?
7-7 戻り値が必要ならFunctionプロシージャの出番
- Functionプロシージャの使い方
- サンプルの紹介(sample3.xlsm)
- サンプルをFunctionプロシージャでまとめる
7-8 長いコードは機能別に小分けにしよう
- 長いコードは分割して見やすくすべし
- サンプルの紹介(sample4.xlsm)
- 機能ごとにSubプロシージャにまとめる
- 値の受け渡しにモジュールレベル変数も活用
7-9 変数を利用して賢くコードを分割しよう
- フクザツなコードを変数で分割する
- サンプルの紹介(sample5.xlsm)
- 入れ子になったコードを分割して解消する
- 長くて複雑なコードも分割してスッキリ
- [COLUMN]CurrentRegionとOffsetとResizeについて
第8章 変化やトラブルにもっと強いコードにする
8-1 表のデータの増減に自動対応可能にしよう
- 自動対応でもっと良いコードに!
- 表のデータが増減したら,どう対応する?
- Endプロパティで表の末尾のセルを取得
- 表の末尾セルの行番号を数値として取得
- 表の増減に自動対応できるようサンプルを書き換えよう
- [COLUMN]表の下端セル,上から取得するか下から取得するか
8-2 表の移動に自動対応可能にしよう
- 表が移動しても対応できるコードにするには
- 「名前の定義」機能のキホンを身につけよう
- セルに定義した名前をVBAで利用する
- 定義した名前をあとから変更する方法
- Cellsを使いセルを相対的に指定する
- 名前を定義したセルを基準に相対的に指定する
- セルの行を相対的に指定するように書き換えるには
- 行を相対的に指定するその他の方法
8-3 コードを整理してスッキリさせよう
- Withステートメントでまとめよう
- 「名前の定義」で隠れていた重複箇所を整理する
8-4 予期しづらいトラブルの受け皿を用意しておく
- 予期できるトラブルと予期しづらいトラブル
- 予期しづらいトラブルの例
- On Errorステートメントによる“受け皿”
- サンプルにエラー処理を組み込もう
- 可能な限り予期してエラー処理を設ける