高橋宣成(著)
秀和システム
本の詳細
あなたが最初にVBAを学ぼうと思ったきっかけは何だったか、覚えていますか?
おそらく、多くの方は「自分の業務をさっさと終わらせたい」とか「いつもの繰り返し作業がダルすぎる」とか、ごく個人的な動機からVBAを学び始めます。
そして、入門書を片手にマクロ記録を活用しながら、ちょっとした業務をVBA化してみたら、今まで何時間もかかっていた仕事が瞬殺で終わった。なにより、自分で作ったコードが思い通りに動くのが楽しい!
そんな感動を味わうことでしょう。すると、周りにその感動をシェアしたくなるのが心情。同僚向けにカスタマイズしてあげたり、誰でも使えるようにユーザーインターフェースを設置したり。そんなことをしていると、会社のアチコチがあなたのVBAツールの虜になっていきます。
ここまでは、良いことづくめですよね。問題は、ここから先の展開です。
業務というものは、必ず変化を伴います。ですから、業務で使用するツールも合わせて変更を要します。また、ITリテラシーが高くないユーザーは、あなたが想定しなかった操作をしてしまうときがあります。そんな人は、それを「不具合だ」と言うでしょう。
- 自分で書いたはずの「数百行にもなるコード」の解読に、丸一日かかってしまった
- エラーを直しても別のエラーが発生。場当たり的にいじり過ぎて訳が分からなくなり、結局最初から書き直すはめになった
- どうしてもエラーが解消できない!
- やりたいことは簡単そうなのに、やってみたらとてつもなく大量のコードを書くはめになった
長々と買いていまいましたが、前述の内容に少しでも共感を持っていただけたなら、おそらくあなたのVBAレベルは「初級から抜け出せていない。中級レベルまでもう少し」といったところでしょう。
そんなあなたにまず必要なのは、高度なステートメント覚えることでもなく、大量のコードを書けるようになることでもありません。むしろ逆。それは「楽をするスキル」です。
目次
はじめに
本書を読むにあたっての注意事項
第1章 脱初級への第一歩は「道具であるVBE」を使いこなすことから
1-1 まず最初に必要なのは「楽をする」スキル
- 初級から抜け出せていない。中級レベルまでもう少し
- 「楽をするスキル」とは何か
- 真っ先に取り組むべきなのは「VBE」
1-2 今すぐに見直すべきVBEの設定とは
- VBEの設定を甘く見てはいけない
- 楽にVBAを扱うには「見栄え」も大切
- 自動構文チェックの無効化
- 変数の宣言を強制する理由
1-3 コメントブロックのアクセスキーを設定する
- コメント機能は簡単に操作できるようにする
- VBEで独自のアクセスキーを設定する
1-4 自動メンバー表示で「打たずに打つ」
- タイプミスを0%にすることは不可能
- うろ覚えでも素早くミスなく入力できる
- 自動メンバー表示が使えるようにコードを書く
1-5 マスターしておくべきVBEのショートカットキー
- コードの量が増えてもカーソル移動に時間をかけない
- 変数またはプロシージャの定義の表示
第2章 イミディエイトウィンドウの神髄
2-1 イミディエイトウィンドウの役割を再定義する
- 入力画面としてのイミディエイトウィンドウの役割
- イミディエイトウィンドウのショートカットキー
2-2 変数・プロパティの値とステートメントの結果を調べる
- 変数やプロパティの値を調べる
- ステートメントとその結果を評価する
2-3 イミディエイトウィンドウからプロシージャを実行する
- イミディエイトウィンドウでのプロシージャ実行
- 引数を渡してプロシージャを実行する
- Functionプロシージャを検証する
第3章 バグを制するものはVBAを制する
3-1 なぜ、初級者はデバッグ作業で時間を浪費するのか
- エラーに浪費している時間を限りなくゼロにする
- エラーが解決できない主要因は「情報不足」
3-2 エラーメッセージは情報の宝庫、エラーは成長の糧
- エラーをわざと発生させて「敵を知る」
- ユーザー入力の内容によって発生するエラー
3-3 3種類のエラーと、よく見かけるエラーメッセージ
- VBAで発生するエラーには3つの種類がある
- コンパイルエラーと、そのよくあるパターン
- 実行時エラーと、そのよくあるパターン
3-4 ステップ実行で手がかりを得る
- エラーの原因も発生箇所も分からないという例
- ステップ実行とローカルウィンドウ
3-5 ブレークポイントを設定して手がかりを得る
- ブレークポイントで処理を中断する
- 中断ポイントで変数・プロパティの値を調べる方法
第4章 システムの成功と失敗の分かれ目は設計にあり
4-1 成功のポイントはPCを活躍させること
- 全ての要望を取り入れれば良いわけではない
- PCの力を最大限に借りる
4-2 インプット・プロセス・アウトプット
- システムはIPOの組み合わせでできている
- インプットとアウトプットがExcelである
- システムが大きすぎる場合は小さなIPOに細分化する
4-3 PCにやさしいフォーマットとは
- フォーマットがプロセスの複雑さを左右する
- PCが得意なフォーマットはテーブル形式
- 人にやさしい形式と、PCにやさしい形式
4-4 IDとマスタ・入力規則で表記の揺らぎを防ぐ
- 表記の揺らぎはPCの天敵
- IDとマスタにより表記の揺らぎを防ぐ
- 入力規則で指定した値のみ許容する
第5章 できる担当者のコーディングは発想からして違う
5-1 脱初級を阻害するコーディングのクセを取り除く
- 初級者に染みつきやすいコーディングのクセとは
- 正しく理解してコーディングをするには設計が不可欠
- 「コードを理解する」を定義する
5-2 VBAコードにする前に、日本語でプロセスを分解する
- コーディングは「分解」と「翻訳」である
- プロセスの分解は日本語で
- プログラムの構成要素は3種類しかない
5-3 欲しい情報を効果的に調べ上げる高速検索術
- 情報源の特性を知り、効果的に情報を手に入れる
- 検索内容によって検索方法を使い分ける
- 特定のサイトにしぼってGoogle検索をする
- VBA検索に役立つサイト
5-4 お決まりフレーズはストック&ペースト
- マクロ記録と他人のコードはおすすめしない
- 自分のコードを資産として再利用する
- ストックコード集
5-5 小さく細かくコーディングとテストを進める
- コードを書いた端からテストを進めるべき理由
- テストの範囲をできる限り絞る
- まずテスト用のコードDebug.Printで出力する
第6章 リーダブルコードでVBAを資産化する
6-1 なぜ、リーダブルコードが必要なのか
- 優れたコードとは何か
- 書いたコードを負債とせず資産にすべき
6-2 読みやすいコードとは何か
- 「リーダブルコード」を定義する
- シンプルなコードは読みやすい
- 「単位」に対して適切なボリューム
- コードが持つ情報の密度を高める
6-3 ブロックとインデントでコードのフォルムを美しく
- フォルムに情報を持たせる
- Withでコードを美しく書く
- ネストはできる限り浅く
- 縦のラインを揃えて書く
6-4 プロシージャはどのように分割すべきか
- プロシージャの基本単位は「1画面」
- プロシージャを分割する条件
6-5 変数はどこでどのように宣言すべきか
- その変数は使うべきかどうか
- 暗黙の型は避ける
- 変数のスコープを絞る
6-6 ネーミングが情報の密度を上げる
- 変数やプロシージャに意味を持たせる
- キャメル記法とスネーク記法
- Boolean型を表現する名前
- 短いネーミングと日本語のネーミング
6-7 コードにない情報をコメントで伝える
- コードにない情報を最小限の文字数で伝える
- どのようなコメントを残すべきか
- プロシージャとその構造を表すコメント
6-8 徹底してコードに一貫性を持たせる
- 条件式の左辺と右辺の配置
- Boolean型の条件式
- 一貫性のある書き方を徹底する
第7章 「変化」への耐久性を持たせるためのVBAの作法
7-1 「変化」は必ずやってきてVBAを劣化させる
- ちょっとした改修でも高くつくことがある
- 「変化」はシステムの劣化を招く
- 未来の変化に備える2つのアプローチ
7-2 同じコードを書いてはいけない
- 繰り返しで同じコードを1行にまとめる
- 同じ処理をプロシージャ化する
7-3 定数・列挙型でマジックナンバーを避ける
- マジックナンバーには定数を使う
- 文字列の定数化で楽にVBAの運用をする
- 列挙型でグループにまとめて数値を割り当てる
7-4 ユーザー操作によるシステム干渉に耐えるVBAを作る
- ExcelVBAでのユーザー操作による干渉
- 行数、列数の変更への対策
- シートの変更への対策
- ワークブックとシートを明示する
7-5 変化する「集合」にはコレクションを使う
- コレクションとFor Each文
- 独自のコレクションを作る
7-6 膨らんでいくデータ量をどう取り扱えば良いのか
- データ量も意識すべき「変化」である
- データ量を抑えるためにすべきこと
7-7 マクロの実行時間を短縮するためのテクニック
- 繰り返しに注目して計算回数を減らす
- マクロ実行時の自動計算をオフにする
- 画面表示の更新とイベントの発生をオフにする
- セル範囲を配列に格納してから計算をする
第8章 VBAは個人作業のみならず「チーム」にも革命をもたらす
8-1 VBAはチームの資産にするべき
- あなたのチームを最大に苦しめ得るリスク
- VBAをチームで維持管理するための2つの方針
8-2 チームで情報を蓄積・共有して、強力なライブラリを作る
- チームの情報を蓄積して共有する
- 更新性の高さで情報管理に濃淡をつける
- 階層的に情報をリンクでつなぐ
- 集合知はチームの強力な武器になる
8-3 Gitでソースコードとそのバージョンを楽に管理する
- ファイル名でのバージョン管理の限界
- Gitバージョン管理でできること
- Gitを使ってバージョン管理を複数人で共有する
8-4 リファクタリングでチームのコードに一貫性を持たせる
- チームでコーディングルールを統一する
- リファクタリングとは
- 安全にリファクタリングを進める
8-5 技術ブログで情報を公開することで、新たな価値を生み出す
- 蓄積した情報を世界に向けて発信する
- 情報を公開することではじめて得られるもの
おわりに
索引
著者紹介
高橋宣成(著)
秀和システム