54

私はいくつかの古い VB コードを調べていて、次のような関数定義に出くわしました -

 Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer

 Private Sub cmdCustomerList_Click()

違いは何ですか?

4

8 に答える 8

119

関数は値を返しますが、Sub は返しません。それはとても簡単です。

于 2012-04-13T13:27:34.853 に答える
21

関数は式で使用することもできます。サブルーチンはできません。関数は、サブルーチンよりもコードの可読性を高めることができます。

関数が読みやすさを向上させる方法の例を次に示します。

If AccountIsLocked("JJones") then Msgbox("This account is locked")

この関数はどこかで定義されます

public function AccountIsLocked(UserId as string) as boolean
   dim usr = uow.AccountRepository.UserInfo(UserId)
   return usr.locked
end function

以下は同じ例ですが、サブルーチンでコーディングされています。

CheckIfAccountLocked("JJones")

他の場所では、このサブが定義されています。

public sub CheckIfAccountLocked(UserId)
       if uow.AccountRepository.UserInfo(UserId).locked then
          msgbox("Account is locked")
       end if
end sub

また、値のチェックはアクションから分離されていることに注意してください。これは、職務の分離に貢献します。この関数は、再利用性に役立ちます。

VB6 では、括弧を管理する奇妙な規則がいくつかあります。サブへのパラメーターがない場合、括弧は必要ありません (Visual Studio は括弧を削除する可能性があると思います)。これを回避する 1 つの方法は、サブの前に「Call」というキーワードを追加することです。

Call CheckIfAccountLocked()

CheckIfAccountLocked
于 2014-11-18T16:33:57.220 に答える
4

関数では、ブール値、文字列、およびその他のデータ型として値を返すことができます。

しかし、サブは何も返しません。与えられたコードと命令を実行するだけです。これらもメソッドとみなされます

サブはコントロールのイベントでも使用され、これらのイベントも値を返しません。

たとえば、コマンド ボタンのクリック イベント: Private sub cmd_click()

サブ終了

于 2014-08-23T11:12:03.520 に答える
3

VB6 の Sub と Function の違いは何ですか?

sub」は何らかのアクションを実行できます。「サブ」は値を返しません。

例:

Form_Load()

function」も何らかのアクションを実行できますが、呼び出されたポイントに何らかの値を返します。つまり、「関数は、多くの場合、変数に基づいて値を返します」

例:

Val()、FormatPercentage()。

于 2016-08-25T09:25:38.883 に答える
3

どちらもコードを記述するセクションですが、関数は値を返す必要があります。たとえば、複雑な数学的手順を何度も実行する必要があるプログラムがある場合、単純に関数を作成し、そこに複雑な数学コードを入れて、計算を行う必要があるときはいつでも関数を呼び出すことができます。 . これがうまく説明できたかどうかわからないことを願っています。

于 2015-04-30T09:20:17.857 に答える
0

vbの関数

  • 関数は何らかの値を返す必要があります
  • 構文 : private function fun_name(argument/s(optional)) as return_type(integer,string..) return value end function
  • 関数呼び出しには fun_name(arguments(optional) ) で十分です

VBのサブ

  • サブルーチンは値を返す必要はありません
  • 構文 : private sub sub_name(引数/s(オプション))

    サブ終了

  • 関数呼び出しには sub_name(arguments(optional) ) で十分です
于 2014-07-09T06:19:12.387 に答える
-3
  1. 関数の構文は Function...End function となり、Sub の場合は Sub...End Sub となります。
  2. 関数にはオブジェクトがある場合とない場合がありますが、サブルーチンにはオブジェクトがありません
  3. 関数は、Sub がない場所で再利用可能です
  4. 関数は値を返すことができますが、sub は返しません
  5. 関数にはオブジェクト リポジトリがある場合がありますが、sub にはありません
  6. 関数の拡張子は .qfl で、sub は .vba です
于 2017-04-03T17:00:09.117 に答える