Access VBA質問箱 IV

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

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


2550 / 9994 ←次へ | 前へ→

【10717】Re:エクセルに値渡ししたい
回答  neptune  - 08/11/10(月) 18:50 -

引用なし
パスワード
   ▼ON さん:
こんにちは

この辺りは非常に大事ですから落ち着いてゆっくり考えてください。

先ずテストで使っているByVal_str2とByRef_str2は検証用としては
全く不適当です。
なぜなら、関数内では引数以外modoriが出てこない
下記の2つの関数と等価です。
Function ByVal_str2(ByVal idx1 As String, ByVal idx2 As String) As String
  ByVal_str2 = idx1 & idx2
End Function

Function ByRef_str2(ByVal idx1 As String, ByVal idx2 As String) As String
  ByRef_str2 = idx1 & idx2
End Function

次にsut testですが、長くなるので必要部分のみ引用しますが、上に記したように
関数によって、outは変更されません。従って、以下のようになります。

    str1 = "hoge"
    str2 = " fuga"
    out = "123"     '代入A
 
    ' 変数outは渡しているが、Functionで処理されていない。
    '従って、変数outの内容はByVal_strの戻り値には全く関係ない。
    Debug.Print "Test1:" & ByVal_str(str1, str2, out)
    Debug.Print out '追記※1 ←は代入Aで代入したデータが全く変化していない

    '上記と同じ
    Debug.Print "Test2:" & ByRef_str(str1, str2, out)
    Debug.Print out '追記※2 ←は代入Aで代入したデータが全く変化していない
 
    '結果としてはByVal_st、ByRef_strは同じ処理をしている。
    'ByVal、ByRefは関係ない。

で、冷静に考えればこの程度はそんなにややこしくないので、
Helpの
Visual Basicプログラミングのヒント
  --引数の効率的な引き渡し
に引数について説明しています。サンプルもあります。
この辺りを冷静に読んでみてはいかがですか?

それと、「VB 値渡し 参照渡し」でググって見たんですが、沢山解説も
ヒットします。それらもご覧になって下さい。
ht tp://www001.upp.so-net.ne.jp/yoshihiro/gram4.htm
は判りやすそうです。

ちょっと難しくなり、言語もvb.netですが、概念も用語もVBAと同じです。
ht tp://msdn.microsoft.com/ja-jp/library/ddck1z30(VS.80).aspx

理解できるまで考えないと、見通しのよいプログラムが書きにくいとか、
この絡みでバグが出た時、大変困りますので、頑張って下さい。

理解しにくい点があれば、質問してください。わかる範囲なら相談にのります。
517 hits

【10633】エクセルに値渡ししたい ON 08/10/29(水) 13:55 質問[未読]
【10635】Re:エクセルに値渡ししたい neptune 08/10/29(水) 22:32 回答[未読]
【10676】Re:エクセルに値渡ししたい ON 08/11/6(木) 15:55 質問[未読]
【10678】Re:エクセルに値渡ししたい neptune 08/11/6(木) 17:22 発言[未読]
【10709】Re:エクセルに値渡ししたい ON 08/11/10(月) 11:14 質問[未読]
【10710】Re:エクセルに値渡ししたい neptune 08/11/10(月) 13:36 回答[未読]
【10715】Re:エクセルに値渡ししたい ON 08/11/10(月) 16:11 質問[未読]
【10716】Re:エクセルに値渡ししたい ON 08/11/10(月) 17:12 発言[未読]
【10717】Re:エクセルに値渡ししたい neptune 08/11/10(月) 18:50 回答[未読]
【10722】Re:エクセルに値渡ししたい ON 08/11/11(火) 9:17 お礼[未読]
【10733】Re:エクセルに値渡ししたい ON 08/11/13(木) 15:15 お礼[未読]
【10720】Re:エクセルに値渡ししたい neptune 08/11/10(月) 21:52 発言[未読]
【10711】Re:エクセルに値渡ししたい neptune 08/11/10(月) 13:38 発言[未読]

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