第6講 ファンクションプロシージャを理解しよう
第1話 ファンクションプロシージャとは?
プロシージャには2つあります。
1つは、前講で学んだサブプロシージャであり、
もう一つが本講で学ぶファンクションプロシージャです。
2つとも社員です。
つまり、社長や他の社員に命じられて仕事をする点は共通しています。
違いは、サブプロシージャは命じられた仕事を遂行するだけなのに対して、
仕事の結果を報告するのがファンクションプロシージャです。
親分に誰々を消せ命じられて、
サブプロシージャは殺人を実行するだけですが、
ファンクションプロシージャの方は、その結果の報告もします。
比喩での説明は以上にしまして、
端的に違いを説明しますと、
サブプロシージャは戻り値をもたないのに対して、
ファンクションプロシージャは、戻り値をもちます。
前講で引数の話をしました。
ファンクションプロシージャも引数のないプロシージャと
引数のあるプロシージャの2種類あります。
そして、引数のあるプロシージャが数学の関数と同じなのです。
では皆さん、次のようなマクロを組んで下さい。
Private Sub CommandButton1_Click()
Dim x As Integer, y As Integer 'xは整数を入れる変数 yも整数を入れる変数
x = 10 'aは整数を入れる整数
Cells(4, 1) = x
y = f(x)
Cells(5, 1) = y
End Sub
Function f(x As Integer)
f = 2 * x
End Function
Private Sub CommandButton2_Click()
Rows("4:2000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
すると、実行結果は
となります。
これはxに10を入れたら2倍になって帰って来てそれがyに入ったということです。
前話でパーツの中身を知らなくても、使い方さえ知っていればよいと、
話したのは、fは値を2倍にしてくれる箱であることを理解していれば、
fを使えるということなのです。
値を2倍にしてくれるツールだということを知っていれば、
中の構造がどうなっているのかを知っている必要がないのです。
中を見なくてもいいよということを抽象化と呼んでいるのですが、
どう考えてもブラックボックス化の方がいいと思いませんか。
f(x)=2x
と同じであることお分かりですか。
ブラックボックスfとは、入ってきた値を加工する機械です。
さて、戻り値という言葉を使いました。
ファンクションプロシージャfはCommandButton1_Clickから10という値を渡されて、
それを2倍にして、CommandButton1_Clickに戻したのです。
戻す値だから、戻り値です。
報告すると比喩でいったのは、戻り値を仕事の依頼主に戻すことです。
10を2倍したらどうなるか調べて報告しなさい・・・これが仕事の依頼内容です。
もっとも、こんな簡単な仕事なら一瞬ですが、
数独の問題数はいくつあるか調べて報告しなさいといわれば、
スパコンを使える環境に合ったとしても、
報告できるファンクションプロシージャは現在はありません。
もし、あなたがそんなファンクションプロシージャを開発できれば、
間違いなく歴史に名前を残すことが出来ます。
それでは、皆さんファンクションプロシージャfは1から10までの和を求めて報告任務
ファンクションプロシージャgは11から20までの和を求めて報告する任務として、
マクロを組んでみて下さい。
最初は、引数のないファンクションプロシージャで組んでみて下さい。
実行ボタンを押すと
ファンクションプロシージャの作り方は、サブプロシージャの場合と同じで、
エンターなどでどこかに空白行を作り
function f
と打ってエンターをすればよいのです。
第5講第10話へ 第2話へ
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ第2部へ
小学生からエンジニアまでのRuby入門へ
小学生からエンジニアまでのC言語入門 基礎から応用まで
本サイトトップへ