Module ステートメント

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

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

指定項目

  • attributelist
    省略可能です。「属性リスト (Visual Basic)」を参照してください。

  • accessmodifier
    省略可能です。次のいずれかになります。

    Visual Basic でのアクセス レベル」を参照してください。

  • name
    必ず指定します。このモジュールの名前です。「宣言された要素の名前 (Visual Basic)」を参照してください。

  • statements
    省略可能です。モジュールの変数、プロパティ、イベント、プロシージャ、および入れ子にされた型を定義するステートメントを指定します。

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

解説

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

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

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

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

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

クラスとモジュール

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

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

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

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

規則

  • **修飾子。**すべてのモジュール メンバーは、暗黙的に Shared (Visual Basic) になります。メンバーを宣言するときに Shared キーワードは使用できません。また、メンバーの共有の状態は変更できません。

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

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

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

[動作]

  • **アクセス レベル。**モジュールの内部では、各メンバーを独自のアクセス レベルで宣言できます。モジュール メンバーのアクセス レベルは、既定で Public (Visual Basic) になりますが、変数と定数だけは Private (Visual Basic) が既定のアクセス レベルです。モジュールのアクセス レベルがメンバーのレベルより厳しい場合、指定したモジュール アクセス レベルが優先されます。

  • **スコープ。**モジュールのスコープは、名前空間全体です。

    モジュール メンバーのスコープは、モジュール全体です。すべてのメンバーに型の上位変換が行われ、メンバーのスコープがモジュールのある名前空間に上位変換されることに注意してください。詳細については、「型の上位変換 (Visual Basic)」を参照してください。

  • **修飾。**1 つのプロジェクトが複数のモジュールを持つことができます。また、名前の同じメンバーを複数のモジュールに宣言できます。ただし、モジュールの外部にあるメンバーを参照する場合は、適切なモジュール名を使ってメンバーへの参照を修飾する必要があります。詳細については、「宣言された要素の参照 (Visual Basic)」を参照してください。

使用例

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

参照

関連項目

Class ステートメント (Visual Basic)

Namespace ステートメント

Structure ステートメント

Interface ステートメント (Visual Basic)

Property ステートメント

概念

型の上位変換 (Visual Basic)