Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


62297 / 76738 ←次へ | 前へ→

【19048】Re:同じような 追伸
発言  ichinose  - 04/10/20(水) 1:10 -

引用なし
パスワード
   ▼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」のまんまです。

でも、参照渡しより、パラメータを取得するのにスタック内のアクセスのみで済むので処理が速いとされています。


たぶん、こんなしくみになっていると思いますが・・・。

0 hits

【19035】同じような ponpon 04/10/19(火) 23:25 質問
【19037】Re:同じような ichinose 04/10/19(火) 23:39 発言
【19038】Re:同じような 追伸 ichinose 04/10/19(火) 23:47 発言
【19040】Re:同じような 追伸 ponpon 04/10/20(水) 0:07 発言
【19041】Re:同じような 追伸 [名前なし] 04/10/20(水) 0:14 回答
【19045】Re:同じような 追伸 ponpon 04/10/20(水) 0:36 お礼
【19047】Re:同じような 追伸 [名前なし] 04/10/20(水) 1:08 回答
【19050】Re:同じような 追伸 ponpon 04/10/20(水) 7:55 お礼
【19042】Re:同じような 追伸 ichinose 04/10/20(水) 0:15 発言
【19043】Re:同じような 追伸 ponpon 04/10/20(水) 0:18 発言
【19044】Re:同じような 追伸 ichinose 04/10/20(水) 0:24 回答
【19046】Re:同じような 追伸 ponpon 04/10/20(水) 0:45 お礼
【19048】Re:同じような 追伸 ichinose 04/10/20(水) 1:10 発言
【19049】Re:同じような 追伸 ichinose 04/10/20(水) 1:22 発言
【19051】Re:同じような 追伸 ponpon 04/10/20(水) 8:09 お礼

62297 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free