|
はじめまして。
Excel 2003 の VBA について質問です。
標準モジュールで定義している関数の引数に、メンバ変数を「参照渡し」で渡し、結果をメンバ変数へ代入するというものです。つまり、参照渡しの引数を戻り値のように使用するというものなんですが、出来ないです。
下記に確認したコードを記します。
ご返答頂けると助かります。
<コードの概要>
内容は、クラスモジュールの String 型のメンバ変数(sTargetFolder)を、r2 関数へ参照渡しで渡し、r2 関数内で値を変更。その後、Debug.Print でイミディエイト・ウィンドウへ出力する、というものです。
<クラスモジュール「CWork」>
public sTargetFolder as string
<標準モジュール「main」>
Private Sub r2(ByRef lpValue As String)
'サンプルとして、アクティブ・セルの内容を代入する処理にしていますが、
'本来は色々な計算を行った結果を代入するものになります。
'また、戻り値は関数にあたえた引数の成否の結果を示す値に使うため、
'戻り値で計算結果返すことはできません。
lpValue = ActiveCell.value
End Sub
Private Sub r()
Dim wk As New CWork
r2 wk.sTargetFolder
Debug.Print "1.""" & wk.sTargetFolder & """"
Dim s As String
r2 s
Debug.Print "2.""" & s & """"
'何故 1 と 2 の出力結果がことなるの?
End Sub
|
|