VBA初心者がエラーをなくすには、楽しんで解こう!

エクセルVBAの講座で初心者にプログラミングを教えています。

初心者が自分でプログラムを作って実行すると、何度もエラーになります。
エラーばかり出てなかなか修正できない。それが嫌になって挫折してしまった人も多いのではないでしょうか。

そんな人のための解決方法を教えます。

どこで何が起こったのか?

「ちゃんとお手本に習って書いたのにどこがいけないの?」

エラーが起こったとき、初心者は何が起こっているのか分からなくなってしまいます。そしてパニックになってしまいます。

そんなときは、まずは「どこで」エラーになったのかを見つけましょう。エラーメッセージが出たら[デバッグ]ボタンを押すとエラーした行に色がついています。そこがエラーとなった行です。その上までの処理は正しく動いているので安心してください。

次にエラーした行のうち、どこがいけないかを見つけましょう。たとえば

A = Sheets(“集計シート”).Cells(i, 3).Value

という式でエラーになっていたとします。

i の代わりに 1 を入れて、.Cells(1,3).Value としてみます。これでエラーが解消されるなら、i がおかしいことになります。きっと 0 になっていて、そんなセルが無いからエラーになっているんでしょう。

逆にこれでもエラーになるようなら、それ以外のところがエラーです。”集計シート”というシート名が間違っているかもしれません。

こんなふうに、どこでエラーとなっているのか? 犯人を特定することがまず必要です。

計算は1つづつやろう!

たとえばこんな式のところでエラーになったとします。

Sheets(“集計表”).Cells(i, 2).Value = Sheets(“売上表”).Cells(j,3).Value / Kosuu

この式だとどこでエラーになったのかすぐに分かりません。
式は短く分解しておきましょう。こんな感じで。

A = Sheets(“売上表”).Cells(j, 3).Value
B = A / Kosuu
Sheets(“集計表”).Cells(i, 2).Value = B

これだど、たとえば

  • 1行目でエラーになった。→jが0だった。
  • 2行目でエラーになった。→Kosuuが0だった。
  • 3行目でエラーになった。→シート名が”集計表”ではなく”集計表 “になっていた。

というように、エラーの原因を探しやすくなります。
長い式を書かずに、短い式に分解しておきましょう。

推理小説を解くように楽しんで

どこがエラーとなっているのかを探すのは、事件の犯人を捜すのに似ています。
アリバイを検証して、「この人(この部分)は間違っていない」としていくと、それ以外のところに犯人がいるはずです。

この、アリバイを検証して容疑者を減らし、真犯人を見つける、ということを楽しんでやってもらえればいいな、と私は思っています。

プログラムがエラーになってしまったら嘆くのではなく、「エラーの真犯人を探してやる」と、推理小説を解くような気持ちで楽しんでできないでしょうか?

エラー解析を楽しめるようになれば、プログラミングの技術もめきめき上達することでしょう。


エクセル表をひたすらコピーする作業に時間をとられていませんか?

エクセルVBAオンライン入門講座

詳しくはリンク先のストアカのサイトをご覧ください。