第5講 サブプロシージャを理解しよう
第2話 関数は社員です
専門用語を用いないとC++およびC言語の講義で、
私は、関数は社員であると申し上げたことがあります。
C++やC言語では、絶対的な社長である関数mainがあって、
mainの命令の通りに社員が働くのです。
社員同士は、お互いに仕事を依頼し合うことが出来ますが、
社員は、社長に命令することは出来ません。
VBやVBAでも、社員と比喩的に言っても間違いではありません。
ただ、C言語などと違う点は、社員は社長であるmainに命令できないのに対して、
誰でもが誰に対してでも仕事を依頼=命令することが出来るのです。
(なんと驚くことに、自分に仕事を依頼することさえ出来るのです。
これを関数の再帰的呼び出しとか再帰的使用と呼びます。
後の独立の講のテーマになります。)
第4講第8話のコード
Private Sub CommandButton1_Click()
Rows("3:2000").Select
Selection.ClearContents
Cells(1, 1).Select
Dim i As Long, w As Long
w = Int(10000 * Rnd) + 2
For i = 0 To 100000
Cells(3 + Int(i / 10), 2 + ((2 * i) Mod 20)) = w
If w > 1 Then Cells(3 + Int(i / 10), 3 + ((2 * i) Mod 20)) = "→"
If w = 1 Then Exit For
If w Mod 2 = 0 Then w = Int(w / 2) Else w = 3 * w + 1
Next
End Sub
Private Sub CommandButton2_Click()
Rows("3:2000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
は、
Private Sub CommandButton1_Click()
CommandButton2_Click
Dim i As Long, w As Long
w = Int(10000 * Rnd) + 2
For i = 0 To 100000
Cells(3 + Int(i / 10), 2 + ((2 * i) Mod 20)) = w
If w > 1 Then Cells(3 + Int(i / 10), 3 + ((2 * i) Mod 20)) = "→"
If w = 1 Then Exit For
If w Mod 2 = 0 Then w = Int(w / 2) Else w = 3 * w + 1
Next
End Sub
Private Sub CommandButton2_Click()
Rows("3:2000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
と書き換えることが出来ます。
CommandButton2_Click
によって、CommandButton1_ClickがCommandButton2_Click
に仕事を依頼したのです。
C言語のような絶対的な社長はいませんが、
VBAの場合、CommandButton1_Clickが社長で他の人達は、
社員と考えても大きな間違いではありません。
ただし、CommandButton2_Click等のサブプロシージャも、
CommandButton1_Clickに仕事を依頼することも出来るのです。
ですが、やっぱり司令塔を決めてプログラミングする方がよいでしょう。
ですから、司令塔をCommandButton1_Clickにして、
その他のメンバー(社員)はCommandButton1_Clickの指示の基に動いた方がまとまりのある
チームになります。
『船頭多くして船山に登る』
の意味は、「船頭多くして船山に登るとは、指図する人が多くて方針の統一がはかれず、物事がとんでもない方向にそれてしまうことのたとえ。」ですが、
指図する人が多いとチームはまとまりません。
第1話へ 第3話へ
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言語入門 基礎から応用まで
本サイトトップへ