VBAで開発する方法とは?考え方・開発手順を徹底解説!


VBAで開発をすることになったけど、進め方がわからない・・・
Excelの機能とうまく連携して開発を進める方法はないのだろうか?
VBAで開発するための考え方や具体的な作業を知りたいな・・・

Excelはほとんどのパソコンに入っているため、自動化ツールを開発する案件はとても多いです。また、別の言語で開発経験がある場合は、VBA未経験でも開発に着手することはよくあります。

ただ、いざ開発を始めてみると、Excelの機能を駆使して開発を進める流れに戸惑う方もいるのではないでしょうか。他の言語と違い「Excel」に依存しているため、考え方が少し違うのです。

こんにちは!フリーランスエンジニア兼テックライターの脇坂です。

この記事では、ExcelVBAで開発をすることになった方向けに、VBAの開発環境の作り方、開発するときの仕様・設計の考え方、開発手順を解説します!

また、デバッグを効率化させるためのVBAのテクニックも最後に解説しています。ただ開発できるだけでなく高速に開発できるようにもなるため、ぜひ最後まで読んでみてくださいね!

この記事はこんな人のために書きました。

  • 別の言語で開発経験があるが、VBAの経験がないエンジニア
  • 別の言語との違いで苦しんでいるVBA開発初心者

目次

VBAで開発する方法とは?

まず、VBAで開発する方法について解説します。

VBAに限らずですが、開発は大きく分けて次の流れで行います。

  • 仕様検討・設計
  • コーディング
  • テスト

開発するシステムの仕様や、具体的な処理、画面イメージなどの設計を行ったうえでプログラミングを行い、出来上がったコードをテストして完成まで仕上げることが、主な作業ですよね。ただ、別の言語からVBA開発を始めた方にとっては、仕様・設計を考えるときに悩むポイントが多いです。

そのため、次にVBAで仕様・設計する考え方について解説します。

VBAで仕様・設計する考え方

まずは、VBAで仕様・設計する考え方について解説します。

ExcelVBAでツール・アプリ開発をするときは、全てVBAで処理を行うのではなく、Excelの機能で実現できる部分は任せることが重要です。たとえば、Excelには条件付き書式で値に応じて色をわけたり、セル入力を活用して疑似的なフォームを作ったり、ピポットテーブルでデータを見やすくしたり、Excelには便利な機能がたくさんあります。

「Excelの機能で実現できる処理 + VBAのコードで作る処理」を見極めて設計していくことが必要です。すべてVBAでコードを書くのではなく、実現したいことがExcelの機能で実現できないか?を考えて仕様・設計を考えることがおすすめです!

具体的には、次のような手順で仕様・設計を進めていきましょう。


■仕様・設計するときの具体的な手順

  • アプリ・ツールで作りたい機能を洗い出す
  • 作りたい機能がExcelの既存機能で実現できないか調べる
  • Excelの機能で実現できる処理、VBAのコードで作る処理に機能を分ける

VBAでコーディングする手順

仕様・設計ができたら、開発に入ります。ここでは、VBAを作るための設定、具体的な開発手順、ツールとして動かすためのボタンの作り方を解説します。

マクロを有効化

まず、VBAの処理を実行するために、マクロを有効化します。具体的な手順は次のとおりです。

1. ファイルタブからオプションをクリック


オプションを選択方法

2. セキュリティセンタータブからセキュリティセンターの設定をクリック

セキュリティセンターの設定のクリック方法

3. マクロの設定から、「すべてのマクロを有効にする」「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」を選択し、OKボタンクリック

マクロ有効化方法

これで、マクロの有効化が完了です。

ここからはVBAを開発するエディタ「VBE」を使い、具体的なマクロの作り方を解説していきます。VBEを開くための開発タブの表示方法、VBEの開き方については、以下を見てみてくださいね!

VBAでマクロを作る方法

次に、VBAでマクロを作る手順を解説します。

1. 「プロジェクトエクスプローラで右クリック → 挿入 → 標準モジュールを選択」で標準モジュールを追加

標準モジュール追加方法

2. 「Sub マクロ名」を入力してエンターキーを押して、Subプロシージャを作る

Subプロシージャの作り方

※ここでは、「マクロ名」というSubシージャを作っています。

3. VBAで簡単な処理を書く
サンプルコード:

Sub マクロ名()
  Worksheets("Sheet1").Range("A1").Value = "初めて書いたVBAコード"
End Sub


VBAを書いた後の画面

これで、VBAのサンプル処理を作ることができました。

サンプルではRangeメソッドを使い、A1セルに「初めて書いたVBAコード」を書き込む簡単な処理を書いています。Rangeメソッドについては以下で解説しているため、詳しく知りたい方は見てみて下さいね!

作ったVBAの実行方法

次に、VBAの処理を実行する方法について解説します。

次のように、作成した処理にカーソルを置き、実行ボタンをクリックするだけで処理を実行することができます。

1. 作成したマクロにカーソルを置く

カーソルを置いたときの画面

2. 実行タブから「Sub/ユーザーフォームの実行」 or 「F5キー」を押して実行

「Sub/ユーザーフォームの実行」の場所

クリックすると、次のようにA1セルに「初めて書いたVBAコード」が表示されます。

マクロ実行結果

ボタンから処理を実行する方法

開発するときはコードから直接実行する方法だけ覚えておけばOKですが、ツール・アプリとして成立させるためには、実行するためのトリガーが必要ですよね。

そのため、シートに設置したボタンから処理を実行する方法を覚えておくと便利です!

以下で詳しく解説しているため、見てみてくださいね!

VBAでテストするときのコツ

開発した後は、動作確認のためテストしますよね。バグがないか確認しながら開発できると、開発が速くなるだけでなくテストの工数も大幅に減らすことができるため、テストのコツについて解説します。

テストと言ってもいろいろありますが、ここでは開発中のバグを減らすテストについて解説します。

VBAにも他の言語と同じように、デバッグ機能があります。


デバッグタブのメニュー

コードの左側のスペースをダブルクリックしてブレークポイントを張り、処理を確認しながらデバックします。

ただ、処理をブレークポイントで止めて確認していくだけでなく、もっと効率的に値を確認していく方法があります。それが、イミディエイトウィンドウの活用です。

イミディエイトウィンドウでできることは主に次の二つです。

  • ネットで調べた関数や、値の計算処理、変数の値などを確認できる
  • 作った関数を実行したり、戻り値を確認できる

書いたVBAのコードが正しく動いているか確認するときに使えるため、とても便利な機能ですね。

引用元:侍エンジニア https://www.sejuku.net/blog/46859

開発を効率化させるだけでなく、テストを進めながら開発を進めることができるため、覚えておくと便利です。

デバッグ方法、イミディエイトウィンドウの活用方法について知りたい方は、以下を見てみてくださいね!

VBAで凝ったシステム開発するためのユーザーフォームとは?

ここまで仕様・設計、コーディング、テストなど一連の開発の流れを解説してきました。

ただ、システム開発をするときは、画面を作っていくことが大半ですよね。ExceVBAで画面を作る方法が、ユーザーフォームです。ユーザーフォームについては以下で詳しく解説しているので、気になる方は見てみてくださいね!

まとめ

今回は、VBAで開発するときの仕様・設計の考え方、開発手順について解説しました。

特に仕様・設計のコツ、テストのコツは覚えておくと開発がしやすくなるため、覚えておくのがおすすめです!

ぜひ、VBAで開発を進めてみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次