2022.11.18
【初心者向け】Excel VBAのマクロ作成時の進め方
VBAのマクロを作成するときに、このように進めると効率が良いと思う内容をまとめました。「マクロを作りたいが、何から着手すれば良いか分からない」というVBA初心者の方にとって参考になればと思います。
※本記事ではVBA作成時の大まかな考え方をまとめています。具体的なコードの記述方法は割愛しておりますのでご了承ください。
1.タスクの抽象化:VBAのマクロで何を自動化したいのかを書き出す
作業に入る前に、まずは箇条書きレベルで良いので、マクロによって自動化したいことを書き出してください。
(例)
- CSVデータの「商品名」を別のエクセルに移して並び替えたい
- 「;」区切りでまとまっている文字列を一覧化したい
- 表に枠線をつけるようにしたい
書き出したあとは、それらを自動化処理するためには、Excel上で具体的にどのような操作が必要なのかを考えます。また、使われるデータをできるだけ抽象化して、どのようなかたまりなのかを意識しながら噛み砕いていく必要があります。
(例)
・CSVデータの「商品名」を別のエクセルに移して、並び替えたい
→「2022.csv」というファイルを開き、その中にあるA列「商品名」を「2022_list.xlsx」というエクセルブックの「sheet1」のB列に貼りつけて、B列を昇順で並べる
↓
・「;」区切りでまとまっている文字列を一覧化したい
→B2セル~B6セルの「;」区切りでまとまっている文字列を繰り返し「;」ごとに別セルに吐き出されるようにしたい
・表に枠線をつけるようにしたい
→エリアを指定して、枠線をまとめてつける
2.設計書の作成
Excel上でどのような操作が必要なのかを書き出したら、具体的にどのような処理を進める必要があるのかを設計します。
この工程がもっとも重要です。設計書に欠陥があれば、最後にはじめからやり直しとなることもあります。
しかし、設計する時点であらゆるパターンを想定してカバーできれば、汎用性のあるVBAが作れるので、使う人や使われるデータがどのようなものであるかを想定して作成していく必要があります。
(例)
- どのワークブックの、どのワークシートの、どのセルに対して、何を行うのか
- 条件分岐する場合、その条件の軸は何とするのか。何で判定するのか
- 繰り返し処理を行う場合、どこからどこまでを繰り返し処理にして、何をもってして終了とするのか
- 何を変数として設定するのか
- どの順序で処理を行うのか
▼設計書のイメージ
■設計書に必要なもの(参考)
見本となる設計書は以下の要素で構成しています。
□凡例
- 処理のトリガーとなるもの
- 処理の特定の条件でトリガーとなるもの
- 処理内容、条件分岐処理、繰り返し処理(開始)、繰り返し処理(終了)
□具体的な処理の説明
※プロシージャが分かれる場合は、どのプロシージャで何を呼んでいるのか分かるようにし、呼び出される元のプロシージャの処理は別にしておくと見やすいです。
3.プログラミング:マクロの作成
どのプログラミングでも共通していえることですが、コーディング作業は「自分がやりたいことを、プログラムに分かるように言語化する作業」といえます。
設計書がきちんとできていれば、あとはVBAの書き方にならってマクロをコーディングしていくのみです。
基本を押さえてしまえば、サイトや書籍にマクロの書き方やサンプルコードが掲載されているので、筆者はそれらを参考にしながら開発を進めていくことが多いです。
■注意点
・小さい単位でプロシージャを書く方がベター
一つのプロシージャにすべての処理を書こうとせず、できるだけ小さい部品(プロシージャ)で作成するほうが安全です。小さい単位のほうが、エラーが発生した場合にどこに欠陥があるのが見つけやすいからです。
小さい部品を作成し、最後にCALL関数などを用いて各プロシージャを正しい順番で呼び出せるようにした方が、どのような流れで処理をしているのか分かりスッキリとしたコーディングになると思います。
・マクロ自動記録はあくまで参考
自動記録はコードを書くためのものではなく、あくまでマクロでどのような書き方をすると良いかの参考にするためのものと認識した方が良いです。自動記録では汎用性に欠ける場合が多いので注意が必要です。
4.デバッグ:不具合を解消する
■一つ一つ処理を確認する:ステップイン
ステップイン[F8キー]で、マクロのコードを1行ずつ実行することができます。
(ツールバー>「デバッグ」>「ステップイン」を選択でも可能)
■指定の行で処理を止めて確認する:ブレークポイント
マクロのコード上で、指定の行にカーソルを合わせてブレークポイントを設定[F9キー]して実行すると、指定の行まで自動で処理が進みます。
解除したい場合は、インジケーターバーをクリックすると解除できます。
(ツールバー>「デバッグ」>「ブレークポイントの設定/解除」を選択でも設定・解除可能)
▼インジケーターバー
■イミディエイトウィンドウを使用して調べる
イミディエイトウィンドウでプロパティや変数の値や、実行中のマクロの処理結果の情報などを表示させることができます。
□表示方法
ツールバー>「表示」>「イミディエイト ウィンドウ」を選択
□使い方
・プロパティを調べる
▼イミディエイトウィンドウで「?range(“A1”).value」と入力して[Enterキー]を押下
※現時点でのセルA1の値は「案件番号」という文字列であることが分かる
・変数を調べる(変数「i」の値を調べる)
▼イミディエイトウィンドウで「?i」と入力して[Enterキー]を押下
※現時点での変数「i」は2であることが分かる
上記の方法を組み合わせて、処理内容を確認していくことで、デバッグを進めましょう。とくに、変数の処理が正しいか確認する際は、処理を細かく進めながら、イミディエイトウィンドウで出力させて、想定通りの処理が行われているかを確認するとエラーが見つけやすいです。
まとめ
くり返しになりますが、マクロ作成時にもっとも重要となるのは、「設計書をいかにしっかりと作れるか」になると思います。設計書に欠陥があれば、最後にはじめからやり直しとなってしまうこともあります。
しかし、設計する時点であらゆるパターンを想定してカバーできれば、汎用性のあるVBAが作れると思うのでぜひ試してみてください。
本記事がみなさまのお役に立てば幸いです。
補足:初心者向けVBA学習方法
本記事の執筆者がVBAの基礎を身に着けることができた無料のおすすめ動画をご紹介いたします。
Excel VBA[第0弾]ゲームでわかる、マクロVBAプログラミング超入門~作りながら「楽しい!」を実感する2時間講義
https://www.udemy.com/course/excel23vba0/
Excel VBA本の著者直伝!忙しい人のための2時間でマクロ入門 退屈なExcel仕事はマクロにやらせよう
https://www.udemy.com/course/vba-2hour/
関連記事
【Webサイト運用担当者向け】第1回 初心者でも作れるExcelマクロ(準備 編)
https://blog.members.co.jp/article/24555
【Webサイト運用担当者向け】第2回 初心者でも作れるExcelマクロ(値取得/ファイル削除 編)
https://blog.members.co.jp/article/24638
【Webサイト運用担当者向け】第3回 初心者でも作れるExcelマクロ(変数/ループ処理 編)
https://blog.members.co.jp/article/24733
この記事を書いた人
長野 里美
2018年メンバーズ入社。 現在は大型Webサイトの運用ディレクションを担当。 仕事ではできる限り効率的に進めたいと思い立ち、エクセルVBAを勉強。2羽の文鳥を飼っている。