Visual Basic Editorは通称「VBE」と呼ばれており、ExcelVBAでプログラムを作成する際に使用する、Excelが提供する統合開発環境です。
ExcelマクロをExcelVBAで開発する際は、このVBE上でプログラムを記述する必要があり、実際にマクロを実行してデバッグを行うのも、VBE上で行います。Excelマクロの開発に際しては、基本的にVBE上でのみ作業を行いますので、統合開発環境と呼ばれています。
VBEの起動方法
Excelをインストール後の初期設定の状態では、VBEを起動するボタンはどこにも表示されていません。
まずは、VBEを起動するボタンを表示するため、以下の操作を行ってください。
- Excelのメニューの「ファイル」をクリックします。
- 左メニューにある「オプション」をクリックします。
- オプション画面の左メニューにある「リボンのユーザー設定」をクリックします。
- 以下の画面が表示され、以下の画像の「開発」のチェックボックスが空欄のため、チェックしてください。
- OKボタンをクリックして、オプション画面を閉じます。
- Excelのメニューに「開発」という選択肢が表示されますので、「開発」をクリックします。
- 開発のリボンの左端に、「Visual Basic」というボタンが表示されます。
これが、VBEを起動するためのボタンです。 - このボタンをクリックすると、以下のVBEの画面が表示されます。
VBEの画面の説明
VBEは、以下のように分割されたウィンドウで構成されており、それぞれ以下の役割があります。
①プロジェクトエクスプローラー
主に、以下の項目が表示されます。
- VBAプロジェクト(Excelファイル名)
- Microsoft Excel Object
- シートオブジェクト名(シート名)
- ブックオブジェクト
- 標準モジュール
- 標準モジュール名
- Microsoft Excel Object
通常のプロシージャ(プロシージャの詳細は後述)を作成する際は、標準モジュール名をクリックします。
イベントプロシージャを作成する際は、「Microsoft Excel Object」配下の項目をクリックします。
VBEでプロシージャを開発する際は、一般的に通常のプロシージャの操作が多いため、「標準モジュール」配下の項目を操作する頻度が最も多くなります。
ちなみに、VBAプロジェクトを右クリックしてプロパティを表示すると、Excelマクロに対してパスワードを掛けることができます。
②プロパティウィンドウ
このウィンドウは、主にユーザーフォームと呼ばれる機能で使用されますが、Excelマクロを作成でユーザーフォームを使用する場面は限られているため(私が開発した約100本のマクロで、ユーザーフォームを使用したのは1本のみ)、ユーザーフォームを使用する必要が出てきた際に、書籍やネットで調べて使用する、程度の認識で問題ないと思います。
③コードウィンドウ
このウィンドウは、プログラムを記述する領域で、最も使用頻度が高いウィンドウとなります。
Excelマクロファイルを複数開いている場合は、①プロジェクトエクスプローラーに複数のVBAプロジェクトが表示されますが、その配下の標準モジュール名をダブルクリックすることにより、コードウィンドウに表示するモジュールを切り替えることが可能です。
VBAプロジェクト(≒Excelマクロ)は、以下の要素で構成されています。
- VBAプロジェクト
- 標準モジュール(1個以上で構成される)
- プロシージャ(1個以上で構成される)
- 標準モジュール(1個以上で構成される)
Excelファイルを新規に作成した状態では、標準モジュールは作成されていないため、以下の手順で追加します。
- 標準モジュールを追加するVBAプロジェクトをクリックします。
- VBEのメニューから、「挿入」をクリックします。
- 次に、「標準モジュール」をクリックすると、VBAプロジェクトに「標準モジュール」フォルダが作成され、その配下に標準モジュールである「Module1」が作成されます。
④イミディエイトウィンドウ、⑤ローカルウィンドウ
これらのウィンドウは、プログラムのデバッグの際に使用します。
具体的な使用方法については、後述するデバッグの章でご説明します。
VBEを使いこなす!
Excelマクロの開発は、VBEをメインとして作業を行うことになるため、VBEを使いこなせるかどうかによって、生産性が大きく変動します。
VBEには様々な機能がありますが、生産性を向上させるための機能に絞ってご説明します。
コードウィンドウを分割する
コードウィンドウの右端にあるスクロールバーの上端に、「分割バー」と呼ばれるコードウィンドウを分割する部品が存在します。
この分割バーをマウスで下にドラッグすることにより、コードウィンドウを分割することができます。
分割された上下の2つのウィンドウは、連動することなくスクロールすることが可能ですので、2ヵ所のコードを同時に見ながら作業ができるため、使い方を工夫することにより、生産性が向上します。
コードウィンドウの分割を解除する方法は、以下の2つがあります。
- 分割バーをダブルクリックする。
- 分割バーをスクロールバーの最上端までドラッグする。
VBEの設定を変更する
VBEのコードウィンドウにおける動作の設定を行う場合、以下の手順で設定変更画面を表示します。
- VBEのメニューから、「ツール」をクリックします。
- 次に、「オプション」をクリックすると、設定変更を行うことができるオプション画面が表示されます。
オプション画面には、4つのタブがありますが、生産性の向上のために、自分の好みの設定を行う項目が多いのは、「編集」と「エディターの設定」です。
「編集」タブ
「編集」タブは、コーディングにおいて最も生産性に影響があるため、それぞれの設定をご自身で確認すべきと考えます。
私は、以下の設定としております。
全ての項目の説明は行いませんが、ご自身で確認すべき最低限の項目を以下に記載します。
- 自動構文チェック
プログラムの1つの行で、構文通りに記述されていない場合、VBEがその行を自動で赤字で表記し警告しますが、この項目をチェックすると、カーソルが別の行に移動した場合に、エラーダイアログ画面が表示されます。チェックしないと表示されません。
個人的には、これが非常にウザいので、チェックを外しています。 - 変数の宣言を強制する
この項目をチェックすると、マクロの実行後の最初に、プログラムの中で使用されている変数が事前に宣言されているかどうかをチェックし、宣言されていない変数が一つでもある場合は、エラーダイアログ画面を表示します。
この項目をチェックしていない場合、変数の宣言のチェックを行わずにプログラムが実行されるため、変数の宣言を行わずにプログラムを実行した場合は、その多くは思いもよらないエラーメッセージが表示され、デバッグにより多くの時間を費やすことになります。
この項目は、よほどの理由がない限りチェックすべきです。
この項目をチェックすると、標準モジュールを追加した際に、モジュールの最初に「Option Explicit」と表示されますが、これが最初に宣言されていると、全ての変数を事前に宣言しているか、チェックを行います。 - 自動クイックヒント
この項目をチェックすると、以下の画像にように、プログラムを途中まで入力すると、ヒントが表示されます。(必ず表示されるというわけではありません。)
表記は英語であり、入力方法が分からない時はこれだけ表記されても情報として不十分で、入力方法が分かる時は邪魔なだけなので、私はチェックを外しています。
上記の3つ以外については、基本的にはチェックしておいて問題ないかと思います。
「エディターの設定」タブ
「エディターの設定」タブでは、文字の種類毎にフォント名やフォントサイズ、文字の色などを変更することができます。
通常は初期設定で問題ないかと思います。
「コードの表示色」の「キーワード」という項目が初期設定は濃い紺色なのですが、通常のコードの文字の色である黒と見分けづらいため、私は明るい紺色に変更しています。
VBEの自動コード整形機能
コードウィンドウでのコードを入力において、事前に宣言された変数やExcelVBAで定義されているメソッド/プロパティ/関数/引数(これらの詳細説明は後述)などの名称については、入力したアルファベットの文字に対して、VBEは大文字・小文字を区別せず正しい名称が入力されていれば、カーソルを入力行から移動した直後に自動で大文字・小文字を正しい状態に変換します。
従って、基本的に入力は全て小文字のアルファベットで問題ありません。
また、VBEはステートメント(処理を実行する1行の命令文)が正しく入力されている場合、カーソルを入力行から移動した直後に、適切な位置に自動で半角スペース1個を挿入します。
このため、ステートメントの入力時は、基本的に半角スペースを入力する必要はありません。
VBEに行番号を表示するアドイン
VBEには、コードウィンドウに行番号を表示する機能は提供されていません。
Microsoftが公式に提供しているものではありませんが、VBEに行番号を表示するアドインはネット上から入手することは可能です。
ただし、公式のアドインではないため、使用する場合は自己責任となりますが、私が使用する限りにおいては特に問題はありませんでした。
見た目が、行番号と実際の行とで微妙にずれていますが、そこはご愛嬌ということでご了承ください。
インストール方法は、以下のサイトをご参照ください。