Visual Basic Editorの基礎

投稿日: 2024年5月16日

VBエディタ(Visual Basic Editor、VBE)は、Microsoft Excelやその他のOfficeアプリケーションで使用されるVBA(Visual Basic for Applications)コードを作成、編集、デバッグするための統合開発環境(IDE)です。VBEを使用することで、ExcelのマクロやVBAプログラムを効率的に開発できます。

VBエディタの主要な機能

エディタの一般的な表示部分の名称になります。

  1. コードウィンドウ:
    • コードの記述と編集を行うエリアです。モジュール、クラスモジュール、ユーザーフォームのコードを表示し、編集することができます。
  2. プロジェクトエクスプローラー:
    • 現在のプロジェクト内の全てのモジュール、クラスモジュール、ユーザーフォームを表示するペインです。プロジェクトの構造を視覚的に把握し、各コンポーネントにアクセスできます。
  3. プロパティウィンドウ:
    • 選択したオブジェクトのプロパティを表示し、変更することができます。ユーザーフォームやそのコントロールの設定を行う際に使用します。

プロジェクトエクスプローラーとプロパティウィンドウは「×」ボタンで消すことが可能です。

消してしまった場合は「表示」タブにあるプロジェクトエクスプローラー プロパティウィンドウで再度表示が可能になります。

VBエディタでの基本操作

新しいモジュールの挿入

プロジェクトエクスプローラーでプロジェクト名を右クリックし、「挿入」→「標準モジュール」を選択します。新しい標準モジュールがプロジェクトに追加されます。

標準モジュールの名称が「Module1」と作成されコードウィンドウが表示されました。

コードの記述

挿入されたモジュールのコードウィンドウにVBAコードを記述します。例えば、以下のような簡単なマクロを作成します。

Sub HelloWorld()
    MsgBox "Hello, World!"
End Sub

マクロの実行

動作を直ぐに確認するにはVBエディタの再生ボタンを押すか又は「F5」キーを押すことで実行されます。

コードに問題が無ければメッセージウィンドウが開き「Hello, World!」と表示されます。

作成したモジュールを削除する方法

作成したモジュールは削除ボタンはありません。
プロジェクトエクスプローラーからモジュールを解放することで消すことができます。
消す対象のモジュール名を右クリックをします。その中の「モジュール名」の解放をクリックします。

エクスポートするかのメッセージウィンドウが表示されます。エクスポートはモジュールを別の名前で個別に保存する場合に使用します。
必要のない場合は「いいえ」を選択します。

解放後はモジュールが削除されます。

VBエディタは、VBAを使ってExcelやその他のOfficeアプリケーションの機能を拡張し、自動化するための強力なツールです。プロジェクトの管理、コードの記述、デバッグなど、VBA開発に必要な機能がすべて揃っています。VBEを使いこなすことで、Excelの作業効率を大幅に向上させることができます。

デバッグで役立つツール

そもそもデバッグとは、コンピュータプログラムやシステム内のバグ(エラーや欠陥)を特定し、それを修正するプロセスのことを指します。
このプロセスには、プログラムをテストして問題の原因を探り、適切な修正を行って問題を解決することが含まれます。デバッグはソフトウェア開発の非常に重要な部分であり、プログラムが正しく、効率的に、そして期待どおりに動作するようにするために必要です。

VBAのデバック方法にイミディエイトウィンドウ(Immediate Window)があります。
「表示」タブの中の「イミディエイトウィンドウ」をクリックします。

画面下にイミディエイトウィンドウが表示されました。

VBAのイミディエイトウィンドウ(Immediate Window)は、開発中のマクロやプロシージャのデバッグに非常に便利なツールです。主に次のような目的で使用されます。

イミディエイトウィンドウ

  1. コードのテスト実行:
    • イミディエイトウィンドウでは、コードの断片を直接実行して結果を確認することができます。これにより、プロシージャ全体を実行することなく、特定の関数やステートメントの動作をテストできます。
  2. 変数の値の確認:
    • 実行中のコードの任意のポイントで、変数の値を調べたり、式を評価したりすることが可能です。たとえば、? myVariable とタイプすることで、その変数 myVariable の現在の値を表示できます。
  3. 値の設定:
    • 実行中のプロシージャにおいて、変数に一時的な値を設定することができます。これにより、特定の条件下でのコードの挙動をテストする際に便利です。
  4. コマンドの実行:
    • VBA関数やプロシージャを直接呼び出して、その効果を即座に確認することができます。

イミディエイトウィンドウを使って簡単にテストできるVBAのサンプルコードを紹介します。以下のコードでは、シンプルな計算関数とそのテスト方法を示します。
①新しいモジュールを作成してください。
②次にこのコードをモジュールに追加してください。

Function SumNumbers(num1 As Double, num2 As Double) As Double
    SumNumbers = num1 + num2
End Function

③次にイミディエイトウィンドウに以下のように入力して、関数を実行します。

?SumNumbers(5, 3)

入力後にEnterキーを押すと、関数が実行され、8という結果がイミディエイトウィンドウに表示されます。

この方法で、関数の挙動を簡単にテストすることができ、様々な入力値で関数を試すことが可能です。
例えば、異なる数値を用いて何度もテストを行うことができます。また、変数の値をチェックしたり、実行中のコードに介入して値を変更するなどのデバッグ作業にも利用できます。

イミディエイトウィンドウでコードのテスト実行の方法

モジュールを新しく作成し、次の関数を挿入します。この関数は、与えられた文字列に対して、文字列の長さを返します。

Function GetStringLength(inputString As String) As Integer
    GetStringLength = Len(inputString)
End Function

イミディエイトウィンドウに次のように入力して関数をテストします。

?GetStringLength("Hello World")

これを入力してEnterキーを押すと、”Hello World” の長さである 11 がイミディエイトウィンドウに表示されます。

同じウィンドウでさまざまな入力値を試すことができます。

?GetStringLength("OpenAI")
?GetStringLength("")  ' 空文字列の場合
?GetStringLength("こんにちは")  ' 日本語の文字列

各コマンドの後にEnterキーを押すと、それぞれの文字列の長さが表示されます。これにより、関数がさまざまなケースでどのように動作するかを素早く確認することが可能です。

このようにイミディエイトウィンドウは、コードの断片を即座にテストしたり、変数の値をチェックしたりするのに非常に便利です。デバッグ中にコードの動作を理解するための有力なツールとなります。

記事