2つのデータの大小などの比較を行う
関係演算 で用いられる演算子を
表3-1 に示す.
表3-1 関係演算子
演算子
意味
用法
解釈
=
等しい
a=b
a = b
<>
等しくない
a <> b
a ≠ b
<
小さい
a < b
a < b
<=
小さいか等しい
a <= b
a ≦ b
>
大きい
a > b
a > b
>=
大きいか等しい
a >= b
a ≧ b
関係式は「
式1 関係演算子 式2 」のように関係演算子と式から構成されている.式1が式2に対して関係演算子の意味を満たしている場合,関係式の値は
true ,そうでない場合の値は
false となる.
プログラム例3-1: 関係式の値を表示する簡単なプログラムを作成してみよう.
①「1-5節(1)」 の①~⑩の手順でコマンドボタンを作成し,コードウィンドウを表示する.
②(プログラム例3-1 )を入力する.
③ Excel表示ボタンでシートを表示し,デザインモードを解除する.
④ ボタンをクリックすると,以下のように,セルA1にはFALSE,それ以外のセルにはTRUEが表示される.
(プログラム例3-1)
Private Sub CommandButton1_Click()
Dim num1 As Integer, num2 As Integer
num1 = 3
num2 = 2
Range("A1").Value = (num1 = num2)
Range("B1").Value = (num1 <> num2)
Range("C1").Value = (num1 > num2)
End Sub
(プログラム例3-1の結果)
論理演算を行う場合は
表3-2 に示す
論理演算子 が用いられる.
表3-2 論理演算子
演算子
意味
用法
解釈
And
論理積(かつ)
a And b
AND演算
Not
論理否定
Not a
NOT演算
Or
論理和(または)
a Or b
OR演算
Xor
排他的論理和
a Xor b
XOR演算
Eqv
同値
a Eqv b
ー
Imp
包含
a Imp b
ー
また,様々な論理値に対する論理演算結果を表3-3 に示す.
表3-3 論理演算の真理値表
aの値
bの値 a And b a Not b a Or b
a Xor b a Eqv b a Imp b Not a
false false false
true false false
true true true
false true false
true true true
false true true
true false false
false true true
false false false
true true true
false true false
true true false
プログラム例3-2: AND演算の例をプログラムする.
①「1-5節(1)」 の①~⑩の手順でコマンドボタンを作成し,コードウィンドウを表示する.
②(プログラム例3-2 )を入力する.
③ Excel表示ボタンでシートを表示し,デザインモードを解除する.
④ コマンドボタンをクリックすると,以下のように,セルA1にTRUEが表示される.
⑤ この論理演算は ( -num2 < num1 < num2 ) が真のとき,TRUEが表示され,そうでなければFALSEが表示される.いま,num1 = 1 で,num2 = 3であるから,上述の論理演算が真となり,プログラム結果のようにTRUEが表示される.
(プログラム例3-2)
Private Sub CommandButton1_Click()
Dim num1 As Integer, num2 As Integer
num1 = 1
num2 = 3
Range("A1").Value = (num1 > -num2) And (num1 < num2)
End Sub
(プログラム例3-2の結果)
(1)If 文
ある条件式を満たしたときに処理を実行したい場合,
ブロックif文 を用いる.If文は,以下のとおり If ThenとEnd Ifとで対になり,この間にはさまれた実行文を条件が満足された場合に処理する.
(If文)
If 条件式 Then
ブロック(処理を記述)
End If
また,ブロック内にif文を記述することもできる.これを
入れ子 という.入れ子のブロックにさらに入れ子を設けることができる.以下の図は,条件式1を満たしたとき,ブロック1-1とブロック1-2の処理が実行される.これに加えて,条件式2を満たしたとき,ブロック2の処理が実行される.
(入れ子のあるif文)
If 条件式1 Then
ブロック1-1(処理を記述)
If 条件式2 Then
ブロック2(処理を記述)
End If
ブロック1-2(処理を記述)
End If
プログラム例3-3: numの値が正のときセルA1に”CodeBlock”と表示するプログラムを作成する.この例では,セルB1に入力した値がnumに記憶され,if文を用いることでnumの値に応じて処理するか否かを選択することができる.
①「1-5節(1)」 の①~⑩の手順でコマンドボタンを作成し,コードウィンドウを表示する.
②(プログラム例3-3 )を入力する.
③ Excel表示ボタンでシートを表示し,デザインモードを解除する.
④ セルB1に整数値を入力後,コマンドボタンをクリックすると,B1に入力した値が正の場合B1に”CodeBlock”と表示される.入力した値が負もしくは0のときは,何も表示されない.以下は,セルB1に「3」を入力した場合の結果である.
(プログラム例3-3)
Private Sub CommandButton1_Click()
Dim num As Integer
num = Range("B1").Value
If num > 0 Then
Range("A1").Value = "CodeBlock"
End If
End Sub
(プログラム例3-3の結果)
(2)Else 文
判断によって選択する処理が異なる場合,
Else文 が用いられる.構文は以下のとおりで,If Then文の条件式が真のときはブロック1,偽のときはブロック2の処理が実行される.
If 条件式 Then
ブロック1
Else
ブロック2
End If
プログラム例3-4: 入力した値が偶数か奇数で出力文字列を選択するプログラムを作成する.
①「1-5節(1)」 の①~⑩の手順でコマンドボタンを作成し,コードウィンドウを表示する.
②(プログラム例3-4 )を入力する.
③ Excel表示ボタンでシートを表示し,デザインモードを解除する.
④ セルA1に整数値を入力後,ボタンをクリックすると,入力した値が偶数の場合B1に"even"と表示され,奇数の場合は"odd"と表示される.以下の解析結果は,偶数「2」を入力した場合の結果である.
(プログラム例3-4)
Private Sub CommandButton1_Click()
Dim ir As Integer
num = Range("A1").Value
ir = num Mod 2
If ir = 0 Then
Range("B1").Value = "even"
Else
Range("B1").Value = "odd"
End If
End Sub
(プログラム例3-4の結果)
(3)ElseIf 文
ElseIf 文 を用いると様々な条件式に対して処理を選択して実行することができる.下の例は,条件式が3つある場合の例で,条件式1を満たした場合にブロック1が,そうでなく条件式2を満たした場合はブロック2が,条件式1も2も満たさず条件式3を満たした場合にはブロック3の処理が,そして,どの条件式も満たさない場合にはブロック4の処理が実行される.最後のElseとブロック4は必要なければ省略可能である.
(ElseIf文)
If 条件式1 Then
…(ブロック1)
ElseIf 条件式2 Then
…(ブロック2)
ElseIf 条件式3 Then
…(ブロック3)
Else
…(ブロック4)
End If
プログラム例3-5: セルB1に入力した値に応じてセルA1にその値が正か負か,あるいは0かを表示するプログラムを作成する.
①「1-5節(1)」 の①~⑩の手順でコマンドボタンを作成し,コードウィンドウを表示する.
②(プログラム例3-5 )を入力する.
③ Excel表示ボタンでシートを表示し,デザインモードを解除する.
④ セルB1に正,0,負の値を入力し,動作確認をする.それぞれの値に応じて,
セルA1に「正」,「0」,「負」が表示される.以下の解析結果は,
正の値「2」を入力した場合の結果である.
(プログラム例3-5)
Private Sub CommandButton1_Click()
Dim num As Integer
num = Range("B1").Value
If num > 0 Then
Range("A1").Value = "正"
ElseIf num < 0 Then
Range("A1").Value = "負"
Else
Range("A1").Value = "0"
End If
End Sub
(プログラム例3-5の結果)
(4)Select Case 文
条件式が1つで,その値(定数式)に応じて複数の処理の中から選択し実行したい場合には,
Select Case 文 が用いられる.下の例は,条件式の値が定数式1の値と一致したときブロック1を,定数式2と一致したときブロック2をどれにも該当しないときブロック3を実行する例である.ブロック3が必要なければCase Elseおよびブロック3は省略可能である.
(select ~ case文)
Select case 条件式
Case 定数式1
処理1
Case 定数式2
処理2
Case Else
処理3
End Select
プログラム例3-6: プログラム例3-5 をSelect Case文でコーディングしなおしてみよう.
①「1-5節(1)」 の①~⑩の手順でコマンドボタンを作成し,コードウィンドウを表示する.
②(プログラム例3-6 )を入力する.
③ Excel表示ボタンでシートを表示し,デザインモードを解除する.
④ 処理結果はプログラム例3-5と同じである.セルB1に正,0,負の値を入力し,
動作確認をする.それぞれの値に応じて,セルA1に「正」,「0」,
「負」が表示される.
(プログラム例3-6)
Private Sub CommandButton1_Click()
Dim num As Integer
num = Range("B1").Value
Select Case num
Case 0
Range("A1").Value = "0"
Case Is < 0
Range("A1").Value = "負"
Case Else
Range("A1").Value = "正"
End Select
End Sub