Module ステートメント

モジュールの名前を宣言し、モジュールを構成する変数、プロパティ、イベント、およびプロシージャの定義を提供します。

構文

[ <attributelist> ] [ accessmodifier ]  Module name
    [ statements ]
End Module

指定項目

attributelist
任意。 「属性リスト」を参照してください。

accessmodifier
任意。 次のいずれかの値を指定します。

Access levels in Visual Basic」を参照してください。

name
必須です。 このモジュールの名前です。 「 Declared Element Names」を参照してください。

statements
任意。 このモジュールの変数、プロパティ、イベント、プロシージャ、および入れ子にされた型を定義するステートメントです。

End Module
Module の定義を終了します。

Remarks

Module ステートメントは、名前空間全体で使用できる参照型を定義します。 モジュール (標準モジュールと呼ばれることもあります) はクラスに似ていますが、いくつかの重要な違いがあります。 すべてのモジュールにはインスタンスが 1 つだけあり、変数を作成したり、変数に割り当てたりする必要はありません。 モジュールは、継承をサポートしたり、インターフェイスを実装したりしません。 モジュールはクラスまたは構造体の意味でではないことに注意してください。モジュールのデータ型を持つようにプログラミング要素を宣言することはできません。

Module は、名前空間レベルでのみ使用できます。 つまり、モジュールの宣言コンテキストは、ソース ファイルまたは名前空間である必要があり、クラス、構造体、モジュール、インターフェイス、プロシージャ、またはブロックにすることはできません。 モジュールは、別のモジュール内、または任意の型の中で入れ子にすることはできません。 詳細については、「宣言コンテキストと既定のアクセス レベル」を参照してください。

モジュールの有効期間はプログラムと同じです。 そのメンバーはすべて Shared であるため、有効期間もプログラムと同じになります。

モジュールは、既定で Friend アクセスに設定されます。 アクセス修飾子を使用してこれらのアクセス レベルを調整できます。 詳しくは、「Visual Basic でのアクセス レベル」を参照してください。

モジュールのすべてのメンバーは、暗黙的に Shared です。

クラスとモジュール

これらの要素には多くの類似点がありますが、重要な相違点もいくつかあります。

  • 用語。 以前のバージョンの Visual Basic では、クラス モジュール (.cls ファイル) と標準モジュール (.bas ファイル) の 2 種類のモジュールを認識します。 現在のバージョンでは、これらのクラスモジュールをそれぞれ呼び出します。

  • 共有メンバー。 クラスのメンバーが共有メンバーかインスタンス メンバーかを制御できます。

  • オブジェクト指向。 クラスはオブジェクト指向ですが、モジュールはそうではありません。 そのため、オブジェクトとしてインスタンス化できるのはクラスだけです。 詳細については、オブジェクトとクラスに関するページを参照してください。

ルール

  • 修飾子。 すべてのモジュール メンバーは、暗黙的に Shared です。 メンバーを宣言するときに Shared キーワードを使用することはできません。また、メンバーの共有ステータスを変更することもできません。

  • 継承。 モジュールは、Object 以外の型を継承できません。すべてのモジュールが、この型を継承します。 特に、モジュールは別のモジュールからは継承できません。

    Object を指定する場合でも、モジュールの定義で Inherits ステートメントを使用することはできません。

  • 既定のプロパティ。 モジュールでは、既定のプロパティを定義することはできません。 詳細については、「Default」を参照してください。

動作

  • アクセス レベル。 モジュールの内部では、各メンバーを独自のアクセス レベルで宣言できます。 モジュール メンバーは、既定で Private アクセスに設定される変数と定数を除き、既定で Public アクセスに設定されます。 モジュールがそのメンバーのいずれかよりもアクセスが制限されている場合は、指定されたモジュールのアクセス レベルが優先されます。

  • 範囲。 モジュールは、その名前空間全体をスコープとします。

    すべてのモジュール メンバーのスコープは、モジュール全体になります。 すべてのメンバーで型の上位変換が行われることに注意してください。これにより、そのスコープがモジュールを含む名前空間に昇格します。 詳細については、「型の上位変換」を参照してください。

  • 修飾。 プロジェクトには複数のモジュールを含めることができ、2 つ以上のモジュールで同じ名前のメンバーを宣言できます。 ただし、このようなメンバーへの参照は、そのモジュールの外部から参照されている場合は、適切なモジュール名で修飾する必要があります。 詳細については、「 References to Declared Elements」を参照してください。

Public Module thisModule
    Sub Main()
        Dim userName As String = InputBox("What is your name?")
        MsgBox("User name is " & userName)
    End Sub
    ' Insert variable, property, procedure, and event declarations.
End Module

関連項目