Excelで業務効率化をしようと考えたとき、多くの人がまず始めるのが Excel VBAのコードを書くこと です。
しかし実は、コードを書く前にやっておいた方が良いことがあります。
それが**「処理の流れを整理すること」**です。
必ずしも必要というわけではありませんが、事前に処理の流れを整理しておくと次のようなメリットがあります。
・コードを書くスピードが上がる
・ミスや手戻りが減る
・処理の全体像が見える
特に処理内容が複雑になればなるほど、フローを可視化しておくことは非常に重要になります。
では、どのように整理すればよいのでしょうか。
フローチャートの記号は勉強すべき?
結論から言うと、必ずしも勉強する必要はありません。
もし、
・SEとして仕事をしたい
・クライアント案件を扱う
・システム開発に関わる
といった目的がある場合は、情報処理系の勉強をして正式なフローチャートの記号を覚えるのも良いと思います。
しかし、
・Excel業務を効率化したい
・自分の仕事を時短したい
・VBAを独学で使いたい
という場合であれば、そこまで本格的なフローチャートは必要ありません。
私のおすすめは、
Excelやテキストで処理の流れを書き出す方法です。
これだけでも十分、VBAコードを書く際の整理になります。
VBAを書く前のフロー整理(例)
例えば次のような処理を作りたいとします。
「設計リストのExcelファイルを複数選択し、ステータスが未手配のものだけ発注リストに取り込む」
この場合、いきなりコードを書くのではなく、まずは以下のように処理の流れを書いてみます。
■処理フロー
| 大項目 | 中項目 | 備考 |
|---|---|---|
| 1. 発注リスト.xlsxを開く | VBAフォーム準備 | このブックがデータ取り込み先になる |
| 2. ファイルダイアログ表示 | Excelファイルを選択 | ユーザーに対象ファイルを選択させる |
| 複数ファイル選択を許可 | .AllowMultiSelect = True を設定 | |
| 3. 設計リストを開く | Excelアプリケーション起動 | CreateObject("Excel.Application") を使用 |
| 4. データ最終行取得 | データ範囲を特定 | Cells(Rows.Count,1).End(xlUp).Row |
| 5. 行データを順番に確認 | 1行目から最終行まで処理 | For Next でループ |
| 6. ステータス確認 | 未手配データのみ抽出 | If 条件で判定 |
| 7. 発注リストへ転記 | 最終行の次の行へ書き込み | 既存データの下に追加 |
| 8. 設計リストを閉じる | メモリ解放 | 保存せず閉じる |
| 9. 次のファイル処理 | 複数ファイル対応 | 選択されたファイルを順番に処理 |
| 10. 最後のファイルで終了 | 処理完了 | すべてのExcel処理後にVBA終了 |
このように処理を書き出すだけでも、
・どこで For Next を使うのか
・どこで IF条件 が必要なのか
・どこで 最終行取得 をするのか
といったことが、かなり明確になります。
つまりフローチャートは、
**「VBAコードの設計図」**のようなものです。
実はVBAが不要なケースもある
もう一つ、フローを書いておくメリットがあります。
それは、
「そもそもVBAが必要なのか?」
を判断できることです。
処理を書き出してみると、
・Excel関数でできる
・PowerQueryでできる
・ピボットテーブルでできる
というケースも意外と多くあります。
つまり、
VBAを書く前の整理は、最適な方法を見つけるためにも重要
ということです。
まとめ
Excel VBAで業務効率化をする際、いきなりコードを書き始める人は多いです。
しかし少しだけ時間を使って、
・処理の流れを書く
・Excelやテキストで整理する
・フローを可視化する
これをするだけで、
・コードのミスが減る
・開発スピードが上がる
・VBAの理解が深まる
といったメリットがあります。
特にVBA初心者ほど、
**「コードを書く前の整理」**を習慣にすることをおすすめします。
最初は簡単なメモでも大丈夫です。
自分がやりたい処理を言語化すること。
これが、VBAを使いこなすための
最初の一歩になります。


コメント