VBA 入門講座です。今回は入力された数値の 偶数/奇数を判定するマクロ を作ってみます。
[VBA] 偶奇判定マクロ
ダイアログボックスで数値を入力し、メッセージボックスで偶奇を返すサブルーチンです。
'[VBA] 偶奇判定マクロ
Sub Odd_Even()
Dim n As Double
n = InputBox("整数を入力してください")
If n <> Int(n) Then
MsgBox "整数ではありません"
ElseIf n Mod 2 = 0 Then
MsgBox "偶数です"
Else
MsgBox "奇数です"
End If
End Sub
Odd_Even() を実行するとダイアログボックスで「整数を入力してください」と促されます。たとえば「 4 」と入力すると「偶数です」というメッセージが表示され、「 3 」と入力すると「奇数です」というメッセージが表示されます。「整数を入力してください」と言われているにもかかわらず、「 11.6 」のような小数を入れるようなひねくれたことをすると「整数ではありません」と注意されてしまいます。
4行目のコード
If n <> Int(n) Then
において「 <> 」は「等しくない」、すなわち数学で言うところの「≠」を表す比較演算子です。また Int は数値の小数点を捨てて整数に変える VBA関数です。 n がもともと整数であれば n と Int(n) は等しいはずですが、 n が小数であればこの2つは異なった数値となります。そうした場合に
MsgBox "整数ではありません"
として整数でないことを告げるように処理します。
n が整数であることをパスすると次の条件判定に移ります。
ElseIf n Mod 2 = 0 Then
は「 n を 2 で割った余りが 0 ならば」という条件文です。この Mod はメソッドでも VBA関数でもなく、余りを求める演算子です。たとえば
x = 10 mod 3
と記述すると「 10 を 3 で割った余り 1 」が変数 x に格納されます。偶奇判定マクロでは数値 n を 2 で割ったときに「偶数である」と判定し、それ以外を「奇数である」と判定しています。
[おすすめ記事] 0 は偶数? それとも奇数?
エクセルや数学に関するコメントをお寄せください