アプリ版:「スタンプのみでお礼する」機能のリリースについて

参照渡しをする時は、渡される側は違う変数を使うべきなのでしょうか?

VBAのお勉強をしているのですが

Sub test1()
Dim mystr As String
mystr = "a"
Call test2(mystr)
Call test3(mystr)
End Sub
Sub test2(ByRef mystr As String)
MsgBox mystr
End Sub
Sub test3(ByRef mystr2 As String)
MsgBox mystr2
End Sub

この場合、test2とtest3ではどちらを使ったほうがいいのでしょうか?
test3は、mystr2 というmystrとは違う変数を使っていますが、
test2は、test1のmystrと同じ変数を使っています。

test1と同じ変数を使おうが違う変数を使おうが
どちらにしろ
(ByRef 変数名 As String)
で宣言するから、変わらないのでしょうか?

A 回答 (2件)

>test1と同じ変数を使おうが違う変数を使おうが


>どちらにしろ
>(ByRef 変数名 As String)
>で宣言するから、変わらないのでしょうか?

実際に、コーディングをする時に、読みやすいコードに書くのは当たり前のことです。

例え、同じものであっても、サブルーチンなどの場合に、引数で違った名前でつけたら読みにくくなるはずです。ただし、Public キーワードをつけて、他でも使えるものとしプロシージャの引数の名称を一般名(データ型などを類推できるようにする)にするなら、また話は別です。今回は、呼び出しだけに使うものですから、常識的には、引数は変数名と同じにします。

理屈でなく、mystr は、同じものなのですから、私なら表記を同じにします。
Call test2(mystr) →Sub test2(ByRef mystr As String)
    • good
    • 0
この回答へのお礼

読みやすさを心がけるのが一番ですね。
私自身test3のやり方は混乱するので参照渡しをする際は同じ変数を使いたいなーと思い質問しました。

お礼日時:2013/03/26 20:50

>test1と同じ変数を使おうが違う変数を使おうが


>どちらにしろ
>(ByRef 変数名 As String)
>で宣言するから、変わらないのでしょうか?
貴方が言われているように、これが正しいですね。




余談
C言語のポインタを理解していれば、このあたりの仕組みは簡単に理解できますね
    • good
    • 0
この回答へのお礼

やはりそういう事なんですね。
C言語ですか・・・
未知の世界です。

お礼日時:2013/03/26 20:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!