デバッグ力でスキルアップ! Excel VBAのプログラミングのツボとコツがゼッタイにわかる本

概 要

Excel VBAプログラミングの基礎を学んだ方向けに、デバッグの方法とコツをわかりやすく解説した入門書です。自作のVBAプログラムを実行すると、プログラムは最後まで動くものの、得られた結果が意図通りではなく、それを修正しようと思ったが、プログラムのどこをどう修正すればいいかわからず途方にくれたことはありませんか? 本書は、オリジナルのマクロがゼロから作れるようになることを目標に、VBEのデバッグ機能の使い方から、論理エラーの実践的なデバッグ方法、どのようなアプローチでデバッグを進めて行けばいいのかを、実際に参加者名簿や販売管理のプログラムを使いながら解説しています。練習用プログラムのダウンロードサービス付き。Excel 2016/Windows 10での対応確認済みです。

著者 立山秀利
価格 本体2300円(税別)
ISBN 978-4-7980-4013-4
発売日 2013/12/14
判型 B5変
色数 2色
ページ数 304
CD/DVD
対象読者 初級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

第1章 Excel VBAの実践には“デバッグ力”が不可欠

1-1 なぜ“デバッグ力”が必要なのか

プログラムが意図通り動いてくれない……

論理エラーの“デバッグ力”が非常に重要

VBEのデバッグ機能

段階的に作り上げていくノウハウと組み合わせる

1-2 VBEのデバッグ機能でできること

論理エラーの典型的な原因

【 1 】意図通りの流れで処理が行われていない

【 2 】変数やプロパティや式などの値が意図通り取得・変更できていない

VBEのデバッグ機能でできることとメリット

第2章 VBEのデバッグ機能の基本

2-1 サンプル「参加者名簿」の紹介

基本的なデバッグ機能の練習用Subプロシージャ

2-2 処理の流れを追う ~その1 ブレークポイントとステップイン

何はともあれデバッグツールバーを表示しておこう

ブレークポイントで中断する箇所を指定

「ステップイン」で1行ずつ実行

ブレークポイントとステップインを体験しよう

2-3 処理の流れを追う ~その2 複数のブレークポイントと[継続]ボタン

ブレークポイント間のコードをまとめて実行

2-4 変数などの値をポップアップで確認

中断時に変数などの値を確認する

ポップアップで変数「hnrfcM」の値を確認

ポップアップで変数「i」の値を確認

2-5 変数などの値をウォッチウィンドウで確認

ポップアップの限界

ウォッチウィンドウの基本的な使い方

中断状態でウォッチ式を登録

2-6 プロパティや式の値をウォッチウィンドウで確認

セルのValueプロパティの値を確認

式の値を確認しよう

ウォッチウィンドウとポップアップの使い分け

2-7 デバッグ機能のまとめと疑似体験

VBEのデバッグ機能を整理

デバッグを疑似体験

第3章 サンプル「販売管理」の紹介

3-1 より実践的なデバッグの学習に用いるサンプル「販売管理」

販売データの表から請求書を自動作成するサンプル

途中段階でのサンプルでデバッグを学ぶ

【ステップ1】から【ステップ2】を作る

【ステップ2】を作るのは初心者にとって実は難しい

3-2 サンプル「販売管理」の処理の流れを追ってみよう

【ステップ1】の処理をステップインで追う

【ステップ2】の処理をステップインで追う

第4章 「販売管理」のループ化でケーススタディ

4-1 カエル君がデバッグに挑戦!

試行錯誤しながら目的の機能を作り上げる

4-2 カエル君がデバッグ! ~とりあえず販売データの表をループ化

ケーススタディ開始

●とりあえずFor...Nextステートメントでループ化してみる

●請求書の表に販売データが1 件しかコピーされない!

●販売データをコピーする処理をデバッグ機能でチェック

●販売データの2 件目以降は上書きされていると判明

●コピー先のセルの行の指定が原因と判明

4-3 カエル君がデバッグ! ~請求書の表を変数「i」でループ化

コードを修正して再度動作確認

●コピー先の行を変数「i」で置き換えてみる

●販売データがバラバラの行にコピーされてしまった!

●再びデバッグ機能で処理を追ってみる

●販売データの表の処理も同じ変数「i」を使ったことが原因

解決策を自分自身で考え試行錯誤を繰り返す

4-4 カエル君がデバッグ! ~新たな変数「Cnt」で行を指定してみる

解決策は自分自身で考えて再び試す

●請求書の表の行の指定を変数「Cnt」に置き換えてみる

●実行時エラーが発生! 再びデバッグで処理を追う

●存在しない“A0”セルにコピーするから実行時エラー

●なぜ変数「Cnt」の値は0なのか調べる

実行時エラーの原因究明にも有効

4-5 カエル君がデバッグ! ~変数「Cnt」に値を代入してみる

変数「Cnt」の値が0のままの状態を解消したい

●変数「Cnt」に12 を代入してみる

●また同じ論理エラーが発生!

●変数「Cnt」の値に着目して原因を考える

4-6 カエル君がデバッグ! ~変数「Cnt」の値を1増やしてみる

変数「Cnt」の値を1増やしているのに、うまく動かない……

●変数「Cnt」の値を1 増やしてみる

●またバラバラの行にコピー! 変数「Cnt」の増え方はOK ?

●繰り返しの2 回目以降の処理をチェック

●無条件に変数「Cnt」を1 増やしてしまうのが原因

販売データをコピーした時だけ値を1増やすべき

4-7 カエル君がデバッグ! ~A商事の販売データの時だけ1増やす

変数「Cnt」はどのタイミングで1増やすべき?

●変数「Cnt」を1 増やすコードを移動してみる

●販売データが1 行下にズレてコピー

●変数「Cnt」の値を1 増やす場所を再度変更

4-8 その他のありがちな論理エラーのパターン

論理エラーはさまざまなパターンで起こりうる

End Ifの後ろで変数「Cnt」の値を1増やすと……

販売データのコピーの途中で変数「Cnt」の値を1増やすと……

ループ内で変数「Cnt」に12を代入すると……

第5章 「販売管理」のフォームでケーススタディ

5-1 本章で用いる「販売管理」について

フォーム対応した「販売管理」で学習

【ステップ3】の「販売管理」のコード

【ステップ3】の「販売管理」のフォーム

4つのプロシージャの実行順

5-2 【ステップ3】の「販売管理」の処理の流れを追ってみる

デバッグ機能で【ステップ3】の処理への理解を深める

5-3 カエル君がデバッグ! ~フォーム表示の処理はどこに記述?

フォーム表示の処理だけ残った状態でケーススタディ

●Subプロシージャ「請求書作成」の最初でフォーム表示

●実行時エラーが発生!

●「myForm.Show」は無事実行されたが……

●2回目の「myForm.Show」で実行時エラー

5-4 カエル君がデバッグ! ~フォームをモードレスで表示してみる

思いついた解決策をとにかく試してみる

●モードレスで表示するよう変更

●フォームを操作する前に実行時エラー発生

●デバッグ機能で1 行ずつコードを追う

●モードレスのため以降の処理が実行されてしまう

●変数「Kokyaku」が空になっている原因は?

5-5 カエル君がデバッグ! ~フォームを閉じる処理を追加してみる

別の解決策を試してみる

●顧客を選択したらフォームを閉じる処理を追加

●請求書が作成されない! その原因を探る

●フォーム表示の処理を切り出して完成!

5-6 【ステップ4】のコードについて

販売データの表の末尾の行番号を自動取得

Endプロパティで末尾のセルを取得

Rowプロパティで末尾のセルの行番号を取得

5-7 カエル君がデバッグ! ~表の末尾の行番号取得のエラーを解決

表の末尾の行番号取得でありがちな論理エラー

●販売データが1件しかコピーされない

●どのワークシートのA3セルなのか確認

●「販売」ワークシートのA3セルになるよう追加

登場しないコードをウォッチ式に追加

Cellsのセル番地を確認するウォッチ式

第6章 その他のデバッグ機能も活用しよう

6-1 条件式が成立した時のみ中断する

その他のデバッグ機能

成立時に中断するウォッチ式を追加

6-2 値が変化した時のみ中断する

値が変化したら中断するウォッチ式

6-3 変数などの値の履歴を確認する

イミディエイトウィンドウと専用のコードを使う

変数「i」の値の履歴を出力

変数「i」と変数「Cnt」の値の履歴を同時に出力

履歴を見やすく出力するワザ

出力用コードの記述場所に注意

6-4 ちょっとしたコードをテストで実行する

イミディエイトウィンドウで実行

イミディエイトウィンドウで値を確認する

変数に値を代入する

6-5 おさえておきたい他のデバッグ機能

ステップインと[継続]ボタン以外の実行方法

ローカルウィンドウ

クイックウォッチ

資料1 マクロ有効化

資料2 VBEカスタマイズ

PR

秀和システム