|
▼ponpon さん:
>▼ichinose さん:
>>>Sub 各種文字設定(ByVal ABC As Worksheets, ByVal MOJI As String)
>> ↑Worksheetです。「s」要りません
>
>
>うまく走りました。たったこれだけで走らないんですね。考えてみれば、「s」をつけるとコレクション?に成るんですよね??かな。
>一枚のシートだから「s」はいらない。」考えてみると当たり前のことですよね。
>いつもいつも初歩的な質問に回答をありがとうございます。
>
>「名前なし」さんにも質問したのですが。実数渡しと参照渡し、解説の意味は何となくわかるのですが、具体的な例としてどんなことがあるのでしょうか。
> よかったら教えていただきたいのですが・・厚かましく申し訳ありません。
値渡しと参照渡しについて。
確認したわけではないのでたぶんの話として。
sub test()
dim x as long
dim y as long
x=1
y=2
Call aaa(x,y)
' 制御を戻す番地
msgbox x
end sub
'========================
sub aaa(a as long,b as long)
a=a+b
end sub
というコードがあったとします。
この場合、参照渡しです。
Call a(a,b)
が実行された時点でスタックと呼ばれるメモリ領域が作成されます。
ここには、プロシジャーaaaの実行が終了したとき制御を戻す番地やパラメータの
番地が格納されます。
プロシジャーaaaでは、このスタックの情報を取得して処理が行われます。
参照渡しの場合は、スタックからパラメータa,bの番地(アドレス)を取得して後、
実際のa,bが存在する番地から値を取得します。
よって、この場合、
Msgbox x
で「3」が表示されます。
sub aaa(byval a as long,byval b as long)
a=a+b
end sub
この場合は、値渡しになります。
値渡しの場合、スタックには、a,bの番地ではなく、指定された値が格納されます。
この場合、
a=a+bの結果である「3」は、スタック内に格納されるはずなんです。
よって、x,yには、演算の結果は反映されません。
だって、プロシジャーaaaが終了してtestに戻ったときには、スタックは
解放されてしまいますから・・・。
つまり、
msgbox xは、「1」のまんまです。
でも、参照渡しより、パラメータを取得するのにスタック内のアクセスのみで済むので処理が速いとされています。
たぶん、こんなしくみになっていると思いますが・・・。
|
|