サーチ…


プロシージャの紹介

Subは、特定のタスクを実行するが特定の値を返さないプロシージャです。

Sub ProcedureName ([argument_list])
    [statements]
End Sub

アクセス修飾子が指定されていない場合、プロシージャーはデフォルトで「 Publicになります。

Functionは、データが与えられ、理想的にはグローバルまたはモジュールスコープの副作用なしに値を返すプロシージャです。

Function ProcedureName ([argument_list]) [As ReturnType]
    [statements]
End Function

Propertyは、モジュールデータをカプセル化するプロシージャです。プロパティには最大3つのアクセサがあります。値またはオブジェクト参照を返すにはGet 、値を割り当てるにはLet 、オブジェクト参照を割り当てるにはSetを使用します。

Property Get|Let|Set PropertyName([argument_list]) [As ReturnType]
    [statements]
End Property

プロパティは通常、クラスモジュールで使用されます(ただし、標準モジュールでも許可されていますが)。そうでなければ呼び出しコードではアクセスできないデータにアクセサを公開します。 Getアクセサーだけを公開するプロパティは "読み取り専用"です。 Letアクセサおよび/またはSetアクセサのみを公開するプロパティは「書き込み専用」です。書き込み専用のプロパティは、プログラミングの良い習慣とはみなされません。クライアントコードで値を書き込むことができれば、それを読み取ることができるはずです。書き込み専用のプロパティを作成する代わりに、 Subプロシージャを実装することを検討してください。

値を返す

FunctionまたはProperty Getプロシージャは、その呼び出し元に値を返すことができます(また、そうする必要があります)。これは、プロシージャの識別子を割り当てることによって行われます。

Property Get Foo() As Integer
    Foo = 42
End Property

例を用いた関数

上記のように、関数は、プロシージャ内で繰り返し発生する可能性のある小さなコードを含むより小さいプロシージャです。

関数は、コードの冗長性を減らすために使用されます。

プロシージャと同様に、関数は引数リストの有無にかかわらず宣言できます。

すべての関数が値を返すので、関数は戻り値の型として宣言されます。関数の名前と戻り変数は同じです。

  1. パラメータ付き機能:

     Function check_even(i as integer) as boolean
     if (i mod  2) = 0 then
     check_even = True
     else
     check_even=False
     end if
     end Function
    
  2. パラメータなしの機能:

     Function greet() as String
     greet= "Hello Coder!"
     end Function
    

関数は、関数内でさまざまな方法で呼び出すことができます。戻り値の型で宣言された関数は基本的に変数なので、変数と同様に使用されます。

機能呼び出し:

    call greet() 'Similar to a Procedural call just allows the Procedure to use the
                 'variable greet 
    string_1=greet() 'The Return value of the function is used for variable
                     'assignment

さらに、関数は、ifおよび他の条件文の条件として使用することもできます。

      for i = 1 to 10
      if check_even(i) then
      msgbox i & " is Even"
      else
      msgbox i & " is Odd"
      end if
      next i

さらに多くの関数では、引数のBy refやBy valなどの修飾子を使用できます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow