Excel VBA質問箱 IV

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

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


44003 / 76735 ←次へ | 前へ→

【37756】Re:メンバの参照渡し
発言  kobasan  - 06/5/17(水) 23:56 -

引用なし
パスワード
   皆さん 今晩は。
私も勉強のために、ちょと書いてみます。

ByRef のヘルプを見ると

参照渡し
プロシージャに引数として変数を渡す方法の 1 つ。参照渡し (参照による引き渡し) で変数をプロシージャに渡すと、その変数の内容は、呼び出されたプロシージャ内で変更することができます。参照渡しでは、呼び出されたプロシージャ内では、渡された変数のメモリ内の格納場所に対して、直接操作を行います。したがって、呼び出されたプロシージャ内で渡された変数の値を変更すると、呼び出し側のプロシージャで参照する元の変数の値も変更されます。

とありますね。

クラスモジュールは別として、下記を実行すると、1回目の MsgBox "s= " & s は、"BB" を表示しますね。
2回目の MsgBox "s= " & s は、"AA" を表示しますね。

この変化が、参照渡しということだと思います。
こんな変化をさせたいということでしょうか?

それから、これだけでは、クラスモジュールについては、よく分りません?


Sub rrr()
  Dim wk As New CWork

  'r2 wk.sTargetFolder = "WW"

  'Debug.Print "1.""" & wk.sTargetFolder & """"


  Dim s As String
  s = "BB"
  MsgBox "s= " & s
  r2 s
  
  MsgBox "s= " & s

  'Debug.Print "2.""" & s & """"

  '何故 1 と 2 の出力結果がことなるの?
End Sub

Private Sub r2(ByRef lpValue As String)
'サンプルとして、アクティブ・セルの内容を代入する処理にしていますが、
'本来は色々な計算を行った結果を代入するものになります。
'また、戻り値は関数にあたえた引数の成否の結果を示す値に使うため、
'戻り値で計算結果返すことはできません。

  lpValue = "AA"  'ActiveCell.Value

End Sub


>
>オブジェクトのプロパティは全て値渡しだと思いますが・・・。
>
>Sub test()
>  call test1(range("a1").value)
>end sub
>
>sub test1(myvalue as variant)
>  myvalue=123
>end sub
>
>
>これだって、セルA1に値ははいりませんよね?
>
>Call aaa(thisworkbook)
>
>これも値渡しです(Thisworkbook Applicationのプロパティです)
0 hits

【37748】メンバの参照渡し Yj 06/5/17(水) 19:00 質問
【37750】Re:メンバの参照渡し neptune 06/5/17(水) 21:06 発言
【37751】Re:メンバの参照渡し neptune 06/5/17(水) 21:08 発言
【37765】Re:メンバの参照渡し Yj 06/5/18(木) 13:03 お礼
【37754】Re:メンバの参照渡し ichinose 06/5/17(水) 22:46 発言
【37756】Re:メンバの参照渡し kobasan 06/5/17(水) 23:56 発言
【37766】Re:メンバの参照渡し Yj 06/5/18(木) 13:40 お礼
【37796】Re:メンバの参照渡し Yj 06/5/18(木) 21:06 発言
【37811】Re:メンバの参照渡し ichinose 06/5/19(金) 9:27 発言

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