広告
お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!
ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!
ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!
プログラムの基本は
(1)上から順番に
(2)条件で分かれ道
(3)繰り返し
でしたね!
今回から(2)条件で分かれ道をやっていきます!
いろいろな条件でプログラムを分かれ道させてみましょう!
プログラミングがどんどん楽しくなる時ですね!
'7日目 プログラム1 Sub test() Dim kotae As Integer kotae = InputBox("世界一高い山は?1・エベレスト:2・富士山") If kotae = 1 Then MsgBox "正解です!" Else MsgBox "ブッブー!不正解です!" End If End Sub
条件によって分かれ道をさせる事ができる「If(イフ)」命令を紹介します。
最初に答えを入れるための変数
Dim kotae As Integer
を用意します。そして「InputBox」命令で答えを受け取ります。
kotae = InputBox("世界一高い山は?1・エベレスト:2・富士山")
ここで答えを受け取ったトコロで「If」命令の出番です!
与えられた条件によってプログラムを分かれ道させていきます。
If kotae = 1 Then MsgBox "正解です!" Else MsgBox "ブッブー!不正解です!" End If
この「If」命令のそれぞれの条件を見ていきましょう!
If kotae = 1 Then MsgBox "正解です!" End If
↓
If 条件 Then 条件が合う場合の処理1 条件が合う場合の処理2 ・ ・ ・ End If
この最初の「条件」が合っていればその後の処理が実行されます。
この場合は「kotae = 1」→「変数kotaeは1と同じか?」という条件になります。
条件については後ほど詳しく説明します。
「If ~ End If」までが一つの「If」命令になります。
Else MsgBox "ブッブー!不正解です!"
↓
Else 条件が合わない場合の処理1 条件が合わない場合の処理2 ・ ・ ・
このElse(エルス)に続くプログラムはそうではない時に実行されます!最初の条件があわない時に必ず実行されます!
2つに分かれる場合はこのように「If」と「Else」でそれぞれ分かれ道させます!
ちなみにこの「If」命令を
If kotae = 1 Then MsgBox "正解です!" End If
だけにして「Else」を書かない場合は、「条件が合う場合」だけ実行されて、「条件が合わない場合」は「何もしない」プログラムになります!
条件の事を「条件式」と言いまして同じか?の「=」の他にもいろいろな条件式があります。
仮にあなたを「you」として、年令を聞かれていると考えてください。
どこからどこまでが、含まれる(ふくまれる)、含まれない(ふくまれない)を意識しながら他の条件式も見てみましょう!
あなたが20才ちょうどだったら。
あなたが20才ではなかったら。
この場合はそれ以外の年令が全てあてはまります。
あなたが20才未満だったら。
この場合は19才から、その下の年令全てあてはまります。マイナスもあてはまります。20才は含まれません!
さきほどの逆ですね!21才から、その上の年令全てです。同じく20才は含まれません!
あなたが20才以下だったら。
この場合は20才も含めてその下の年齢すべてという意味になります。
あなたが20才以上だったら。
同じく20才も含めてその上の年齢すべてという意味になります。
含まれる、含まれないが大事です。あと「<」と「=」の順番を逆に「=<」とプログラムを書いてエラーになったりするミスが多いので気をつけましょう!
ではいろいろな条件式を使って条件を増やしてみましょう!
テストの点数をランク分けするプログラムです!
80点~100点・・・Aランク
30点~79点・・・Bランク
0点~29点・・・Cランク
この条件でランク分けをしてみます!
'7日目 プログラム2 Sub test() Dim test As Integer MsgBox "テスト結果を点数でランク分けします!" & vbCrLf & "A(80~100点):B(30~79点):C(0~29点)" test = InputBox("テストの点数を入力してください!") If test >= 80 Then MsgBox "結果" & test & "点 Aランクです!" ElseIf test >= 30 Then MsgBox "結果" & test & "点 Bランクです!" Else MsgBox "結果" & test & "点 Cランクです!" End If End Sub
「Else If」を続ける事によって、「そうではなく、もし~だったら・・・。」と続ける事ができます。
If 条件1 Then 条件1が合う場合の処理 ElseIf 条件2 Then 条件1が合う場合の処理 Else 条件1・2共に合わない場合の処理 End If
このようにさらに条件を加える事もできます!
If test > 79 Then MsgBox "結果" & test & "点 Aランクです!" ElseIf test > 29 Then MsgBox "結果" & test & "点 Bランクです!" Else MsgBox "結果" & test & "点 Cランクです!" End If
さきほどのプログラムで「=」を抜いた場合です。
含まれる、含まれないが大事です!
広告
If命令の中にIf命令を書く事もできます。
このような構造を入れ子構造と言います。
'7日目 プログラム3 Sub test() Dim suji As Integer Dim suji2 As Integer suji = 10 suji2 = 20 If suji = 10 Then If suji2 = 20 Then MsgBox "おいっす!" End If End If End Sub
外側の条件「suji = 10」、内側の条件「suji2 = 20」ともに合っている場合のみ中の「MsgBox」が実行されます。
「If ~ End If」までが1セットなので注意しましょう。
「And」という接続記号を使って2つ以上の条件を重ねる事もできます。
先ほどのプログラムを「And」を使って書き直してみます。
'7日目 プログラム4 Sub test() Dim suji As Integer Dim suji2 As Integer suji = 10 suji2 = 20 If suji = 10 And suji2 = 20 Then MsgBox "おいっす!" End If End Sub
「And」を使えば「条件1 かつ 条件2 ならば」というように2つ以上の条件を重ねていく事ができます。
「And」は全ての条件が合っている時に実行されます。
3つ以上の条件を重ねる時は「条件1 And 条件2 And 条件3・・・」のように「And」でひたすらつなげていきます。
同じような接続記号に「Or」というものもあります。
こちらは「条件1 または 条件2 ならば」というような意味になりまして、どれか一つでも条件が合っていれば実行されます。
「And」・・・全ての条件が合っている時に実行
「Or」・・・どれか一つでも条件が合っている時に実行
'7日目 プログラム5 Sub test() Dim password As String password = InputBox("passwordを入力してください!(答え:aiueo)") If password = "aiueo" Then MsgBox "認証OK" Else MsgBox "認証ERROR" End If End Sub
文章を使った条件式もできます。
「"」で囲むところに注意です。
それでは最後に簡単な入力チェックを作ってみましょう。
こちらの表を使います。
入力チェックっていうのは入力された値が正しい範囲内にあるかどうかをチェックするものになります。
例えば明らかに大きい数を入れてしまった時や数値の入力に文字を入れてしまったなどのミスを防ぐ事ができます。
まだ繰り返し命令などを習っていないのでとても長ったらしいプログラムになります。
こんなもの入力してらんねーよっ!という方はぜひコピペしてください。
'7日目 プログラム6 Sub nyuuryoku() Dim suji As Variant suji = InputBox("りんごの数量を入力してください(0~100)",XPos:=0,YPos:=0) If IsNumeric(suji) Then If suji >= 0 And suji <= 100 Then Worksheets("sheet1").Range("B3").Value = suji Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B3").Value = 0 End If Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B3").Value = 0 End If suji = InputBox("みかんの数量を入力してください(0~100)",XPos:=0,YPos:=0) If IsNumeric(suji) Then If suji >= 0 And suji <= 100 Then Worksheets("sheet1").Range("B4").Value = suji Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B4").Value = 0 End If Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B4").Value = 0 End If suji = InputBox("ばななの数量を入力してください(0~100)",XPos:=0,YPos:=0) If IsNumeric(suji) Then If suji >= 0 And suji <= 100 Then Worksheets("sheet1").Range("B5").Value = suji Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B5").Value = 0 End If Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B5").Value = 0 End If suji = InputBox("いちごの数量を入力してください(0~100)",XPos:=0,YPos:=0) If IsNumeric(suji) Then If suji >= 0 And suji <= 100 Then Worksheets("sheet1").Range("B6").Value = suji Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B6").Value = 0 End If Else MsgBox "入力エラー!!!" Worksheets("sheet1").Range("B6").Value = 0 End If End Sub
今回は数字・文章両方受け取れるように変数の型をあえて「Variant」にしております。
まず「IsNumeric(変数)」についてですが、これはその変数が数字かどうかを判断できるものになります。
If IsNumeric(suji) Then 変数「suji」が数字の場合に実行されます End If
これで文章の入力を防ぐ事ができます。
あとは数値の範囲をチェックすれば、簡単な入力チェックができますね!
If suji >= 0 And suji <= 100 Then
こちらですね。
「And」接続記号を使って「0~100」の間に範囲を狭めております。
「If」命令を覚えるとプログラムの幅がぐんと広がりますのでいろいろ試して身につけてください!
次回は「If」の仕組みについてもう少し詳しく見ていきます!
広告
Copyright 2016 K.N/petitetech.com