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の開き方については、以下を見てみてくださいね!

【ExcelVBA入門】VBAの基礎知識・書き方・おすすめの学習方法を解説
更新日 : 2019年8月8日

VBAでマクロを作る方法

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

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

標準モジュール追加方法

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

Subプロシージャの作り方

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

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


VBAを書いた後の画面

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

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

【VBA入門】Rangeでセルの範囲指定(Cellsとの使い分けも解説)
更新日 : 2019年5月27日

作ったVBAの実行方法

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

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

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

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

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

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

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

マクロ実行結果

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

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

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

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

【ExcelVBA入門】シート上にボタンを追加する方法について徹底解説!
更新日 : 2019年4月16日

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

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

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

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


デバッグタブのメニュー

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

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

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

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

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

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

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

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

【ExcelVBA入門】VBAでデバッグするための方法とは?
更新日 : 2018年12月5日
【ExcelVBA入門】デバッグに使うイミディエイトウィンドウとは?
更新日 : 2019年4月15日

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

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

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

【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)
更新日 : 2019年4月22日

まとめ

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

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

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

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説