|
質問の意図を誤解していたようです。
>プロシージャを作成する技術的なものではなく、概念的なものです。知らなくてもプロシージャ作成にはあまり関係のないことだと思っています。
いいえ、そんなことはありません。プロシジャーやパラメータの意味を深めるには
大切だと思いますよ!!
>ByRef、ByVarを書くべきところは呼出元であると思います。
これは 違います。あくまでも呼出先です。
例
Sub 足し算2を足す(ByVal 数 As Long, ByRef 答え As Long)
答え = 数 + 2
End Sub
上記のコードは、指定された数字に2を足した数を 返す という機能を持ちます よね?
入力データ 数 長整数型 値渡し
出力データ 答え 長整数型 参照渡し
足し算2を足す というプロシジャーが機能を遂行できるように
パラメータの性質を決めるのが 理屈だと思いませんか?
「数」という変数は、「足し算2を足す」というプロシジャーでは、参照さえできれば
良いので 値渡しであり、 「答え」という変数は、結果を格納するので
参照渡しのパラメータにする。
「足し算2を足す」というプロシジャーの機能に沿って パラメータを決めるのですよ!!
だから、現状の文法で良いのです。
Sub test1()
Dim a As Long
Dim b As Long
a = 5
b = 1
Call 足し算2を足す(a, b)
MsgBox b
End Sub
Sub test2()
Dim a As Long
Dim b As Long
a = 5
b = 1
Call 足し算2を足す(a, (b))
MsgBox b
End Sub
因みに test2では、参照渡し が 値渡しになっているように見えますし、
結果はおなじですが、メカニズムは、若干違いますよ!!
追伸
私は、Nobu10さんの質問や投稿内容 良いと思いますよ!!
少なくとも作成依頼の投稿に比べたら断然です。
比較することすら 失礼だと思うくらいです。
|
|