第6講 サブプロシージャの学習
第7話 引数名の謎の解明
なぜ、引数名が異なっていてよいのか、
もう大体予想がつきますよね。
前話の話と変数が右辺にあるときとそれ以外では意味が異なっていることを思い出せば、
謎は解明されたのと同じです。
の場合なら、
Dim x As Byte, y As Byte, z As Byte
x = Cells(3, 3)
y = Cells(4, 3)
z = Cells(5, 3)
Call f(x, y, z) '社員fに仕事を依頼した
の左辺のx,y,zは箱(変数)そのものですが、
Call f(x, y, z)のx,y,zはそれぞれ5,100,5です。
引数で渡すものは箱(変数)そのものではありません。
箱の中身を参照して(箱の中身をコピーして)渡しています。
箱そのものを渡せないのは、
箱はその箱を用意した(宣言した)社員専用のもので他の社員は使えないからです。
引数の中身すなわち値を送られた側は、それを受け取る受け箱(私書箱)を用意する必要があって、
Sub f(a As Byte, l As Byte, d As Byte)
それぞれの箱の名前をaとlとdにしただけです。
箱はその社員専用のものですから、
どのように箱を呼ぼうがその社員の自由なのです。
プロシージャ(社員)が独立であるとは、
社員の宣言する(用意する)変数が社員専用のものであると言うことです。
箱はその社員専用のものですから、
金庫と呼んでもよいでしょう。
この金庫はかってには開けられないのです。
ただし、社員が許可すれば別です。
金庫の隠し場所を教えて、
金庫の中身を変えることを依頼することもあります。
C言語では金庫の住所を示すポインタによって、
金庫の隠し場所=金庫の住所を教えますが、
ポインタのないVBやVBAでも実質箱の住所を教える方法を持っています。
そして、いかなるプログラム言語でも同じです。
どうやって教えるのか、
それは後の講の課題です。
最後にグローバル変数を学んで、
第6講を占めることにします。
第6話へ 第8話へ