第4講 If文の学習
第2話 If文の簡単なサンプルマクロ
まず、第2話で簡単なサンプルマクロを作り、話の進行とともにソフトを高度化していきましょう。
(VBAで一連の命令を組んだものをマクロといいます。)
最終的には、成績一覧表を作り、合格・不合格や5段階ぐらいの講評を入れていくことにしたいと思います。
まず、
つぎのようなシートと実行コード・消去コードを作ってください。
シート
実行コード・消去コード
Private Sub CommandButton1_Click()
End Sub
Private Sub CommandButton2_Click()
End Sub
もちろん、復習のために最初から作られても結構ですが、効率を優先するなら今まで作ったどれかの開いて改造した方がよいですよね。
そして、実行をダブルクリックして、次のようにコーティングしましょう。
Visua Basicには≦や≧がありませんので、<=と>=で代用します。
この辺はVisua C++やパスカルでも共通ですから、おそらくプログラム言語一般でそうなっていると思われます。
もっとも、パスカルを勉強していたのは今から20年ぐらい前ですから記憶は曖昧ですが。
皆さん、実行を押すとB5に入れられた点数が60以上なら合格とE5に表示させ、消去を押すとB5とE5が空欄になるようにコーティングしましょう。
解答例は、30行下。
Private Sub CommandButton1_Click()
Dim w As Byte '変数の宣言
w = Cells(5, 2) 'エクセルシートB5から値の取得
'合格判定
If w >= 60 Then
Cells(5, 5) = "合格"
End If
End Sub
Private Sub CommandButton2_Click()
Range("B5,E5").Select 'B5とE5の選択
Selection.ClearContents '選択したセルのクリア
Cells(1, 1).Select
End Sub
実行画面
このコーティングだと60未満が入力されたとき、実行を押しても何も表示されません。
そこで、
If 条件式 Then
A
Else
B
End If
文を使って改良してください。
解答例は、30行下。
Private Sub CommandButton1_Click()
Dim w As Byte '変数の宣言
w = Cells(5, 2) 'エクセルシートB5から値の取得
'合否判定
If w >= 60 Then
Cells(5, 5) = "合格"
Else
Cells(5, 5) = "不合格"
End If
End Sub
さて、If文の記入の仕方ですが、
If a >= 60 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
は
If a >= 60 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
と書いてもエラーしませんが、
もちろんよい書き方は、前者
If a >= 60 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
の方です。意味のまとまりごと、段組をする、1行あけるなどプログラムが見やすくなるように心がけてください。
その心がけも構造化プログラミングの思想の一つといえます。
命令文が1文しかないときには、
If a >= 60 Then TextBox2.Text = "合格" Else TextBox2.Text =
"不合格"
If a >= 60 Then TextBox2.Text = "合格"
のように書きます。
命令が複数になり、2行以上になるときは
If 条件式 Then
A
B
C
End If
必ずEnd IfでIf文を閉めないとエラーします。
しかし、1行のときは
命令文が複数のときには、End Ifを入れると逆にエラーします。
If a >= 60 Then TextBox2.Text = "合格" Else TextBox2.Text =
"不合格"
は面倒でも
If a >= 60 Then
TextBox2.Text = "合格"
Else
TextBox2.Text = "不合格"
End If
と書くことをお勧めします。
わかりやすさ優先の姿勢が大切です。
正確に表示されないという問題の改善策の1つがIf...Else...文でした。
実は、If...Else...文を使わないで、ただのIf文でも解決する方法があります。
本によっては、If...Else...文はプログラムをわかりにくくするので、
なるべく使わない方がよいとするものもあります。
では、皆さんIf文だけで先の問題を解決する方法を考えましょう。
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る