Excelマクロ(VBA) コードを書くコツ

VBA導入編
デヴ
デヴ

マクロ(VBA)のコードって
どうやって書けば良いの?

マクロ(VBA)の概要や「モジュール」・「オブジェクト」・「メソッド」といった用語をある程度把握したので、実際にコードを書いてみようと思った時に、このように思ったことはありませんか?
いきなりコードを書いてみようと思っても最初は難しいと思います。
僕の場合、すぐにでも自動化したい操作があったので、それを実現できそうなサンプルコードを必死に探しました。
しかしそれは、あまり得策ではありません。
サンプルコードは探せばいくらでも出てきますが、自分が自動化したい操作をピンポイントに実現できるものはそう多くありません。
いきなり完璧な回答を求めるのではなく、まずは簡単なコードを書くことから始めましょう。

この記事では、 マクロ(VBA)のコードを書くコツについて
僕が当時知りたかったことをまとめました。

今、 「マクロ(VBA)のコード を書いてみたいけど、どう書き始めたら良いかわからない」と悩みを抱えている方が、マクロ(VBA)コードを書くコツについて知るきっかけとなれば幸いです!

スポンサーリンク

① マクロ(VBA)のコードを書くコツ

自動化したい操作を細分化する

僕の場合、マクロ(VBA)のコートを書く際、一番最初にすることは「自動化したい操作の細分化」です。
「自動化したい操作の細分化」 とはどういうことか、具体的に解説します。
例えば、「管理台帳へのデータ入力を自動化したい」という目的があった場合、どんな操作が必要でしょうか?
ざっといくつか挙げてみましょう。

・該当のシートを選択する
・該当のセルにデータを入力する
・ファイルを保存する

最低でもこれらの操作が必要になると思います。
「管理台帳へのデータ入力を自動化したい」という目的を果たすためには、最低でもこの3つの工程をクリアする必要があるということです。
このように、実際にコードを書く際には、自動化したい操作の作業工程を細分化してみてください。
普段、手作業で行っている作業を振り返り、それを1つずつコードで記載していくイメージです。
1つずつ作業をコード化していくと、必ず「ここはどうコードを書けば良いんだ?」と躓く箇所が出てくると思います。
例えば、上記に挙げた工程で言うと、「該当のセルにデータを入力する」という工程です。
今は10行目からデータを入力したいけど、次は11行目から、その次は12行目から・・・といったように、毎回入力したい箇所が変わる場合はどうしたら良いのでしょうか?
その場合は、 「該当のセルにデータを入力する」 という工程を更に細分化します。
「該当のセルにデータを入力する」という目的を果たすためには、「該当のセルを特定する」という工程が必要になりますよね。
なので、「該当のセルにデータを入力する」というコードは、「該当のセルを特定する」という工程を踏んでから、「該当のセルにデータを入力する」といった具合に書く必要があります。
大変な作業に思うかもしれませんが、このように、細分化した作業を1つずつコード化していくことがマクロ(VBA)のコードを書くということです。
焦って、最初から完璧な答えを求めようとするのは禁物です。
冒頭でも話しましたが、自分が自動化したい操作をピンポイントに実現できるサンプルコードはそう多くはありません。
1つ1つの作業を丁寧に振り返り、それをコード化していきましょう。

コードはまとめて書かずに、1行ずつ確認する

先程、 「管理台帳へのデータ入力を自動化したい」という目的を果たすために必要な工程として、以下の工程を例としてあげました。

・該当のシートを選択する
・該当のセルにデータを入力する
・ファイルを保存する

実際にコードを書く際には、これらの工程をまとめて書かずに、工程を1つずつクリアしていってください。
工程を1つずつクリアするとはどういうことか、詳しく解説します。
まず、「該当のシートを選択する」コードを書きます。
そして、次の 「 該当のセルにデータを入力する 」 工程のコードを書く前に、「該当のシートを選択する」ことができていることを確認してください。
「 該当のセルにデータを入力する 」コードを書くのはその後で大丈夫です。
まとめて書いてしまうと、途中で構文エラーがあった時にエラー箇所の工程を見直す必要が出てくるためです。

構文エラーとなってしまった場合、以下の図のようなエラーが表示されます。構文エラーの画像
デバッグを選択すると、エラーとなっている箇所が黄色くハイライトされますが、具体的にどう直せば良いのかまでは明示してくれません。
構文エラーの画像2

このように、せっかくまとめて書いたとしても、黄色くハイライトされているコードを直す。→また次のコードでエラーになる。といったことが繰り返される可能性もあります。
なのでコードを書く際は、工程を1つずつクリアする癖をつけておくと良いと思います。

②コードの確認方法

コードを1行ずつ実行する(ステップイン)

ここまで、マクロ(VBA)コードを書くコツを解説してきました。
ここからは、コードの確認方法について解説していきます。
過去の記事で「記録したマクロの実行方法」や、「ボタンからマクロを実行する方法」を解説をしましたが、コードが正確に書かれているか確認するために、コードを1行ずつ実行する、「ステップイン」という方法があります。
「ステップイン」を実行する方法は以下の通りです。

「Alt」+「F11」キーを押して、「Visual Basic Editer」を開く

Visual Basic Editerの画像

「デバッグ」→「ステップイン」を選択する

ステップインの画像
「ステップイン」は、「F8」キーでも実行できます。
慣れてきたら「F8」キーで実行しましょう。

先頭の行が黄色くハイライトされる

ステップインの画像2

「F8」キーを押すと、次の行が黄色くハイライトされる

ステップインの画像3

このように「F8」キーを押して、「ステップイン」を実行すると、上から1行ずつコードを実行して構文エラーがないか確認することができます。
もしも構文エラーがあれば、以下のようなエラーが表示されます。

構文エラーの画像

このエラーが表示されてしまった個所は、コードに何かしらの誤りがあるということになるので修正する必要があります。
前述しましたが、具体的にどこをどう直せばよいかは明示してくれませんので、エラー箇所をよく確認してください。
(この場合、シート名を「””」で囲っていないので2行目に構文エラーが出ます。)
ステップインをうまく使って、工程をひとつずつ確実にクリアしていくことが「操作の自動化」という目的を達成するための近道です。

③まとめ

マクロ(VBA)コードを書く際は、
自動化したい操作を細分化する。
まとめて書かずにず、1工程ずつ確認する

この記事では、「マクロ(VBA)のコードを書くコツ」について解説しました。

VBA以外にも仕事に役立つ情報を紹介しています。
スポンサーリンク
タイトルとURLをコピーしました