Access VBA質問箱 IV

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

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


2556 / 9994 ←次へ | 前へ→

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

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

////////////一番大きな違い////////////
値渡し:
渡したいデータをコピーして、コピーしたデータへの参照を渡す。
従って、コピーしたデータを関数などで弄くっても元のデータには影響を及ぼさない

参照渡し:
渡したいデータが格納されているデータへの参照を渡す。
関数などでこのデータ弄くると、元のデータを弄くることになり、
元のデータに影響を及ぼすことになる。
////////////////////////////////////
↑を踏まえた上で下記を読んで下さい。

解説をちょっと書いてみました。
Sub Test()
' ByValの時は123のようになるよな気がするのですが hoge fuga になってしまいます

    Dim str1 As String
    Dim str2 As String
    Dim out As String
    Dim ret As Long
  
    str1 = "hoge"
    str2 = " fuga"
    out = "123"
    
    ' 変数outは渡しているが、Functionで処理されていない。
    '従って、変数outの内容はByVal_strの戻り値には全く関係ない。
    Debug.Print "Test1:" & ByVal_str(str1, str2, out)
  
    '上記と同じ
    Debug.Print "Test2:" & ByRef_str(str1, str2, out)
    
    '結果としてはByVal_st、ByRef_strは同じ処理をしている。
    'ByVal、ByRefは関係ない。
    
    '参照渡しの戻り値を使い且つ、関数の戻り値を使う場合はこんな場合
    'もあります。(たまにですが)
    ret = sample(str1, str2, out)
    Debug.Print "sample : sample(str1, str2, out)"
    Debug.Print "結合された文字列 :" & out
    Debug.Print "結合された文字列の文字数 :" & ret & "個"
    
End Sub

'sample:渡された文字列を結合した文字列を返す
'引数 pret:pa、pb を結合したデータを格納する
Function sample(ByVal pa As String, ByVal pb As String, ByRef pret As String) As Long
  On Error GoTo trap
  pret = pa & pb
  sample = Len(pret)
  Exit Function
trap:
  sample = 0
End Function
Function ByVal_str(ByVal idx1 As String, ByVal idx2 As String, ByVal modori As String) As String

  ByVal_str = idx1 & idx2
  Debug.Print "ByVal_str:" & ByVal_str
End Function

Function ByRef_str(ByVal idx1 As String, ByVal idx2 As String, ByRef modori As String) As String

  ByRef_str = idx1 & idx2
  Debug.Print "ByRef_str:" & ByRef_str
End Function

465 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 発言[未読]

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