Module ステートメントModule Statement

モジュールの名前を宣言し、モジュールが構成する変数、プロパティ、イベント、およびプロシージャの定義を紹介します。Declares the name of a module and introduces the definition of the variables, properties, events, and procedures that the module comprises.

構文Syntax

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

指定項目Parts

attributelist
省略可能です。Optional. 属性リスト」を参照してください。See Attribute List.

accessmodifier
省略可能です。Optional. 次のいずれかの値を指定します。Can be one of the following:

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

name
必須です。Required. このモジュールの名前。Name of this module. Declared Element Names」を参照してください。See Declared Element Names.

statements
省略可能です。Optional. このモジュールの変数、プロパティ、イベント、プロシージャ、および入れ子にされた型を定義するステートメント。Statements which define the variables, properties, events, procedures, and nested types of this module.

End Module
Module の定義を終了します。Terminates the Module definition.

RemarksRemarks

@No__t_0 ステートメントでは、名前空間全体で使用できる参照型を定義します。A Module statement defines a reference type available throughout its namespace. モジュール(標準モジュールと呼ばれることもあります) はクラスに似ていますが、重要な違いがいくつかあります。A module (sometimes called a standard module) is similar to a class but with some important distinctions. すべてのモジュールにはインスタンスが1つだけあり、変数を作成したり、変数に割り当てたりする必要はありません。Every module has exactly one instance and does not need to be created or assigned to a variable. モジュールは、継承をサポートしていないか、インターフェイスを実装していません。Modules do not support inheritance or implement interfaces. モジュールが、クラスまたは構造体の意味ではではないことに注意してください。モジュールのデータ型を持つプログラミング要素を宣言することはできません。Notice that a module is not a type in the sense that a class or structure is — you cannot declare a programming element to have the data type of a module.

@No__t_0 は、名前空間レベルでのみ使用できます。You can use Module only at namespace level. つまり、モジュールの宣言コンテキストはソースファイルまたは名前空間である必要があり、クラス、構造体、モジュール、インターフェイス、プロシージャ、またはブロックにすることはできません。This means the declaration context for a module must be a source file or namespace, and cannot be a class, structure, module, interface, procedure, or block. モジュールは、別のモジュール内、または任意の型の中で入れ子にすることはできません。You cannot nest a module within another module, or within any type. 詳細については、「宣言コンテキストと既定のアクセス レベル」を参照してください。For more information, see Declaration Contexts and Default Access Levels.

モジュールには、プログラムと同じ有効期間があります。A module has the same lifetime as your program. メンバーはすべて Shared ので、プログラムの有効期間と同じになります。Because its members are all Shared, they also have lifetimes equal to that of the program.

モジュールは既定でフレンドアクセスになります。Modules default to Friend access. アクセス修飾子を使用してこれらのアクセス レベルを調整できます。You can adjust their access levels with the access modifiers. 詳細については、「 Visual Basic のアクセスレベル」を参照してください。For more information, see Access levels in Visual Basic.

モジュールのすべてのメンバーは、暗黙的に Shared ます。All members of a module are implicitly Shared.

クラスとモジュールClasses and Modules

これらの要素には多くの類似点がありますが、重要な相違点もいくつかあります。These elements have many similarities, but there are some important differences as well.

  • 関する.Terminology. 以前のバージョンの Visual Basic では、クラスモジュール(cls ファイル) と標準モジュール(.bas ファイル) という2種類のモジュールが認識されています。Previous versions of Visual Basic recognize two types of modules: class modules (.cls files) and standard modules (.bas files). 現在のバージョンは、これらのクラスモジュールをそれぞれ呼び出します。The current version calls these classes and modules, respectively.

  • 共有メンバー。Shared Members. クラスのメンバーが共有メンバーまたはインスタンスメンバーであるかどうかを制御できます。You can control whether a member of a class is a shared or instance member.

  • オブジェクトの向き。Object Orientation. クラスはオブジェクト指向ですが、モジュールはそうではありません。Classes are object-oriented, but modules are not. したがって、オブジェクトとしてインスタンス化できるのはクラスだけです。So only classes can be instantiated as objects. 詳細については、「オブジェクトとクラス」を参照してください。For more information, see Objects and Classes.

ルールRules

  • ド.Modifiers. すべてのモジュールメンバーは暗黙的に共有されます。All module members are implicitly Shared. メンバーを宣言するときに Shared キーワードを使用することはできません。また、メンバーの共有ステータスを変更することもできません。You cannot use the Shared keyword when declaring a member, and you cannot alter the shared status of any member.

  • 継承。Inheritance. モジュールは、すべてのモジュールが継承する Object 以外の型から継承することはできません。A module cannot inherit from any type other than Object, from which all modules inherit. 特に、1つのモジュールが別のモジュールから継承することはできません。In particular, one module cannot inherit from another.

    @No__t_1 を指定する場合でも、モジュール定義でInherits ステートメントを使用することはできません。You cannot use the Inherits Statement in a module definition, even to specify Object.

  • 既定のプロパティ。Default Property. モジュールでは、既定のプロパティを定義することはできません。You cannot define any default properties in a module. 詳細については、「 Default」を参照してください。For more information, see Default.

動作Behavior

  • アクセスレベル。Access Level. モジュール内では、各メンバーを独自のアクセスレベルで宣言できます。Within a module, you can declare each member with its own access level. モジュールメンバーの既定のパブリックアクセスは、変数と定数を除き、既定でプライベートアクセスになります。Module members default to Public access, except variables and constants, which default to Private access. モジュールのメンバーの1つよりも多くのアクセスが制限されている場合は、指定したモジュールアクセスレベルが優先されます。When a module has more restricted access than one of its members, the specified module access level takes precedence.

  • 検索.Scope. モジュールは、名前空間全体でスコープ内にあります。A module is in scope throughout its namespace.

    すべてのモジュールメンバーのスコープは、モジュール全体です。The scope of every module member is the entire module. すべてのメンバーに型の上位変換が適用されていることに注意してください。これにより、そのスコープがモジュールを含む名前空間に昇格します。Notice that all members undergo type promotion, which causes their scope to be promoted to the namespace containing the module. 詳細については、「型の上位変換」を参照してください。For more information, see Type Promotion.

  • 評価.Qualification. プロジェクトには複数のモジュールを含めることができ、2つ以上のモジュールで同じ名前のメンバーを宣言できます。You can have multiple modules in a project, and you can declare members with the same name in two or more modules. ただし、このようなメンバーへの参照は、そのモジュールの外部から参照されている場合は、適切なモジュール名で修飾する必要があります。However, you must qualify any reference to such a member with the appropriate module name if the reference is from outside that module. 詳細については、「 References to Declared Elements」を参照してください。For more information, see References to Declared Elements.

Example

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

関連項目See also