パラメータ
1、パラメータ:プロセスは、サブプロセス及び機能において生じます。
2、引数:値渡されたパラメータを呼び出す
送信することによってアドレスにより2、およびパラメータ値を
二つの方法で転送パラメータをVBを:値によって、アドレス転送によって。どちらとしても知られているアドレスで渡さ「参照。」
図1に示すように、渡されたパラメータの値に応じて
BYVAL定義されたパラメータを用いて値によって。使用される場合、プログラムパラメータがメモリに一時的にメモリセルを割り当て、及びメモリ・ユニットに渡される引数の値です。パラメータ変更プロセスの値は、唯一のパラメータは、メモリユニット内の値を変更するときは、引数の値を変更しません。
以下のような:
Private sub test( byval a as integer, byval b as integer)
A=a+20
B=b+0
Print “a=” & a , “b=”& b
End sub
Private sub cmdtest_click()
Dim num1 as integer , num2 as integer
Num1=10
Num2=10
Print “num1=” & num1 , “num2=” & num2
Call test(num1,num2)
Print “num1=” & num1 , “num2=” & num2
End sub
上記のコードでは、テストプロセスパラメータは、bの値を変更し、AとBのパラメータは値によって渡され、「cmdtest」をクリックし、パラメータbが変更され、撮影した実際のパラメータNUM1をNUM2に影響を及ぼしません値。
図2に示すように、アドレスによってパラメータを渡す
BYREF定義されたパラメータを使用して、アドレス値に応じ。定義プロセスでは、ByValのない場合は、デフォルトのパラメータは、アドレスによって渡されます。
アドレスで渡されたパラメータは、呼び出されたプロシージャのメモリアドレスに渡された仮パラメータを指します。そして、パラメータの引数が同じアドレス、すなわち、パラメータの引数と一部共有し、同じストレージユニットを持っています。
(整数、整数bとAS)試験サブプライベートは
。.........他は同じである
結果:AおよびBは、パラメータの変更は、実際のパラメータ値NUM1とNUM2に影響を与えています。すべての下に
いくつかのルールを参照して、値、パラメータ、アプリケーションアドレスによって渡されるパラメータによって渡された:
(1)整数、長い整数、又は単精度パラメータの場合、プロセスは、伝統的な値を使用して、引数の値を変更したくない場合道。効率を改善するために、文字列と配列は、送信モードに対処しなければなりません。加えて、ユーザ定義型とコントロールはアドレスのみを透過させることができます。
(2)他の種類のデータについては、送信は、2つの方法で使用することができます。誤用パラメータを避けるために、値を転送することにより、これらのパラメータの最適な使用することをお勧めします。
(3)関数の戻り値の手順をプロセスの名前ではなく、唯一の値を返し、プロセス中のサブプロセスは、値名を返すことができないが、パラメータの値を返すことがあり、そして複数の値を返すことができます。しかし、使用するサブルーチンの戻り値は、対応するアドレスモード伝送パラメータを必要としています。
配列パラメータは:定義プロセスでは、プロセス・パラメータ・リストの配列パラメータとして現れます。構文は次のとおりである:
形状缶配列名()としてのデータタイプ]
説明:引数リストの配列のみの配列を渡すことができるプロセスは、アドレス、すなわち、仮パラメータ及び引数がメモリの同じ部分を共有を転送する、「()」括弧を必要としませんユニット。
以下のような:
Private function average( age() as integer , n as integer ) as integer
Dim I as integer, aver as integer, sum as integer
For I =0 to n-1
Sum=sum+age(i)
Next i
Aver=sum/n
Average=aver
End function
Private sub command1_click()
Dim employees() as integer ‘定义一个用于存储员工年龄的数组
Redim employees(6)
Employees(0)=20
Employees(1)=28
Employees(2)=30
Employees(3)=24
Employees(4)=25
Employees(5)=35
text1=average(employees,6)
end sub
年齢パラメータの引数として配列上の従業員は、パラメータの年齢部門は次元配列を変更する必要があります。だから、引数の従業員は「薄暗い従業員()整数として、」ステートメントは、動的配列として宣言しなければなりません。
第三に、オブジェクトパラメータ
プロセスパラメータに引数として変数や配列の他には、VBが可能実際のプロセスパラメータに渡されたパラメータとして(例えばフォーム、コントロール、など)オブジェクト。
モードオブジェクトパラメータは、オブジェクトプラスのByValの前に処理パラメータの定義で、即ち、転送するために使用することができ、参照することができる。
次の例では、サブプロセスおよび使用不能によるobjectenaコマンドボタン、テキストボックスコントロールが設けられています。
Private sub objectena( obj1 as object , obj2 as object)
obj1.enabled=false
obj2.enabled=false
end sub
private sub form1_load()
objectena text1,command1
end sub
第四に、ネストされた手順
sub mysub1()
...
end sub
sub mysub2()
call mysub1
end sub
private sub form1_load()
call mysub2
end sub
上記のコードは、mysub2手順はmysub1プロセスを呼び出し、次にForm1_Loadイベントプロシージャは、プロセスmysub2呼び出し