第5講 サブプロシージャを理解しよう
第5話 注釈文
皆さん、試しに次のようなプログラムを組んで下さい。
Private Sub CommandButton1_Click()
Dim a As Integer
a = 10
Cells(4, 1) = a
End Sub
Private Sub CommandButton2_Click()
Rows("4:2000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
すると、実行画面は
です。
ここまでついてこられた優秀な皆さんですから、
こんなプログラム当たり前ですよね。
簡単すぎて申し訳ありません。
ところで、CommandButton1_Clickのコードを次のように変更してみて下さい。
Private Sub CommandButton1_Click()
Dim a As Integer 'aは整数を入れる整数
a = 10 'aは整数を入れる整数
Cells(4, 1) = a
End Sub
それで実行ボタンをクリックすると、
です。
なんと、何の影響もありません。
そうなのです。
'aは整数を入れる整数
は、プログラムに対して何の影響も与えないのです。
理由は、'(もちろん、半角ですよ。)のついている文を注釈文といい、
コンピュータは注釈文を無視する=読み飛ばします。
無視されるんじゃ意味ないんじゃない!?
と思われるかも知れないのですが、
この注釈文は、とても重要なのです。
それは、何のためにあるかと申しますと、人間のためにあるのです。
前話の
Private Sub CommandButton1_Click()
Dim i As Integer, w As Integer
CommandButton2_Click
f1
f2
f3
f4
f5
f6
f7
f8
f9
Cells(1, 1).Select
End Sub
では、社長であるCommandButton1_Click
(本当は、社員の1人にすぎませんがリーダは1人の方がよいですから、
社長をやってもらっているのです。)が、
それぞれの社員CommandButton2_Click,f1,f2,f3,f4,f5,f6,f7,f8,f9
に何の仕事を命じたのか分かりません。
そこで、
Private Sub CommandButton1_Click()
Dim i As Integer, w As Integer
CommandButton2_Click '画面をクリア
f1 'データ作成
f2 '出席番号1の生徒の処理と表示
f3 '出席番号2の生徒の処理と表示
f4 '出席番号3の生徒の処理と表示
f5 '出席番号4の生徒の処理と表示
f6 '出席番号5の生徒の処理と表示
f7 '出席番号6の生徒の処理と表示
f8 '出席番号7の生徒の処理と表示
f9 '出席番号8の生徒の処理と表示
Cells(1, 1).Select
End Sub
とすると、社長が社員に何の仕事を命じたかが分かります。
今まで注釈文を付けてきませんでしたが、
これからは、なるべく多くの注釈文を付けましょう。
特に、変数についてはこのサイトでは、
get_int_aのようなかっこつけたものにせずに、
単に、aとかwとしています。
他サイトや入門書籍等では、
変数名は、何の変数であるか分かるように、
書くべきであると主張している場合が多いのですが、
果たしてget_int_aのように書いたからといって、
それが何の変数であるか分かるでしょうか。
それならば、私は
Dim a As Integer 'aは整数型のデータを取得して、素数の処理を行う整数型変数
と書く方がずっと優れていると考えています。
そして、コードの各箇所に
'aは整数型のデータを取得して、素数の処理を行う整数型変数
をコピペしておくのです。
こうすれば、aが何の変数であったのかが分からなくなる心配は
まったくありません。
注釈文であれば、いくらでも詳しく説明できますし、
コピペすれば手間もほとんどかかりません。
get_int_aのように書く問題点は、
初心者はこれ自体に何か意味があると思ってしまうことです。
そして、これを見た瞬間に学習の意欲を失ってしまうのです。
自分には理解できない高尚なものであると、プログラミングに挫折してしまうのです。
変数名とは、箱の名前=箱のラベルにすぎないもので、
それ自体には、他と区別する以外の意味はないのです。
皆さん、是非注釈文を多用して、
プログラムコードをわかりやすく書く習慣を身につけましょう。
第4話の最後に、第4話のコード (添付ファイル)は、
問題があると注意しました。
動くのに何が問題なのでしょうか。
ヒントとして、
Private Sub CommandButton1_Click()
Dim i As Integer, w As Integer
CommandButton2_Click '画面をクリア=前の実行画面を消去
f1 'データ作成
f2 '出席番号1の生徒の処理と表示
f3 '出席番号2の生徒の処理と表示
f4 '出席番号3の生徒の処理と表示
f5 '出席番号4の生徒の処理と表示
f6 '出席番号5の生徒の処理と表示
f7 '出席番号6の生徒の処理と表示
f8 '出席番号7の生徒の処理と表示
f9 '出席番号8の生徒の処理と表示
Cells(1, 1).Select
End Sub
の1行目Dim i As Integer, w As Integerは、
何の役割も果たしていないと書いておきましょう。
さらに、問題はCommandButton1_Click側にあるのではなく、
f1からf9までの社員にあると、いっておきましょう。
そんなこといわれるとますます謎めいてきますよね。
ですが、大変大変重要な話ですから、
次話を熟読して下さい。
第4話へ 第6話へ
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言語入門 基礎から応用まで
本サイトトップへ