広告

【プログラミング入門】【VBA】7日目 If(もし~だったら)

2022.10.10更新

ExcelVBAでプログラミング入門のタイトル画像になります

お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!

ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!

ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!

If(もし~だったら)

プログラムの基本は

(1)上から順番に
(2)条件で分かれ道
(3)繰り返し

でしたね!

今回から(2)条件で分かれ道をやっていきます!

いろいろな条件でプログラムを分かれ道させてみましょう!

プログラミングがどんどん楽しくなる時ですね!

2つに分かれ道

■7日目 プログラム1■


'7日目 プログラム1

Sub test()

	Dim kotae As Integer

	kotae = InputBox("世界一高い山は?1・エベレスト:2・富士山")

	If kotae = 1 Then
		 MsgBox "正解です!"
	Else
		MsgBox "ブッブー!不正解です!"
	End If

End Sub

■実行結果■

VBAにおける条件分岐の基礎「If」命令の説明画像1

■説明■

条件によって分かれ道をさせる事ができる「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」として、年令を聞かれていると考えてください。

どこからどこまでが、含まれる(ふくまれる)、含まれない(ふくまれない)を意識しながら他の条件式も見てみましょう!

If you = 20

あなたが20才ちょうどだったら。

If you <> 20

あなたが20才ではなかったら。

この場合はそれ以外の年令が全てあてはまります。

If you < 20

あなたが20才未満だったら。

この場合は19才から、その下の年令全てあてはまります。マイナスもあてはまります。20才は含まれません!

If you > 20

さきほどの逆ですね!21才から、その上の年令全てです。同じく20才は含まれません!

If you <= 20

あなたが20才以下だったら。

この場合は20才も含めてその下の年齢すべてという意味になります。

If you >= 20

あなたが20才以上だったら。

同じく20才も含めてその上の年齢すべてという意味になります。

含まれる、含まれないが大事です。あと「<」と「=」の順番を逆に「=<」とプログラムを書いてエラーになったりするミスが多いので気をつけましょう!

条件を増やそう!

ではいろいろな条件式を使って条件を増やしてみましょう!

テストの点数をランク分けするプログラムです!

80点~100点・・・Aランク

30点~79点・・・Bランク

0点~29点・・・Cランク

この条件でランク分けをしてみます!

■7日目 プログラム2■


'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

■実行結果■

VBAにおける条件分岐の基礎「If」命令の説明画像2

■説明■

「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命令

If命令の中にIf命令を書く事もできます。

このような構造を入れ子構造と言います。

■7日目 プログラム3■


'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

■実行結果■

VBAにおける条件分岐の基礎「If」命令の説明画像3

■説明■

外側の条件「suji = 10」、内側の条件「suji2 = 20」ともに合っている場合のみ中の「MsgBox」が実行されます。

「If ~ End If」までが1セットなので注意しましょう。

2つ以上の条件を重ねる

「And」という接続記号を使って2つ以上の条件を重ねる事もできます。

先ほどのプログラムを「And」を使って書き直してみます。

■7日目 プログラム4■


'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

■実行結果■

VBAにおける条件分岐の基礎「If」命令の説明画像4

■説明■

「And」を使えば「条件1 かつ 条件2 ならば」というように2つ以上の条件を重ねていく事ができます。

「And」は全ての条件が合っている時に実行されます。

3つ以上の条件を重ねる時は「条件1 And 条件2 And 条件3・・・」のように「And」でひたすらつなげていきます。

同じような接続記号に「Or」というものもあります。

こちらは「条件1 または 条件2 ならば」というような意味になりまして、どれか一つでも条件が合っていれば実行されます。

「And」・・・全ての条件が合っている時に実行

「Or」・・・どれか一つでも条件が合っている時に実行

文章で条件式

■7日目 プログラム5■


'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

■実行結果■

VBAにおける条件分岐の基礎「If」命令の説明画像5

■説明■

文章を使った条件式もできます。

「"」で囲むところに注意です。

入力チェック

それでは最後に簡単な入力チェックを作ってみましょう。

VBA,「If」命令を使った入力チェックの説明画像1

こちらの表を使います。

入力チェックっていうのは入力された値が正しい範囲内にあるかどうかをチェックするものになります。

例えば明らかに大きい数を入れてしまった時や数値の入力に文字を入れてしまったなどのミスを防ぐ事ができます。

まだ繰り返し命令などを習っていないのでとても長ったらしいプログラムになります。

こんなもの入力してらんねーよっ!という方はぜひコピペしてください。

■7日目 プログラム6■


'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

■実行結果■

VBA,「If」命令を使った入力チェックの説明画像2

■説明■

今回は数字・文章両方受け取れるように変数の型をあえて「Variant」にしております。

まず「IsNumeric(変数)」についてですが、これはその変数が数字かどうかを判断できるものになります。


If IsNumeric(suji) Then
	変数「suji」が数字の場合に実行されます
End If
		

これで文章の入力を防ぐ事ができます。

あとは数値の範囲をチェックすれば、簡単な入力チェックができますね!


If suji >= 0 And suji <= 100 Then

こちらですね。

「And」接続記号を使って「0~100」の間に範囲を狭めております。

「If」命令を覚えるとプログラムの幅がぐんと広がりますのでいろいろ試して身につけてください!

次回は「If」の仕組みについてもう少し詳しく見ていきます!

次回

8日目 If(もし~だったら)パート2

広告

Copyright 2016 K.N/petitetech.com