[VBA] 偶奇を判定するマクロ

 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 は偶数? それとも奇数?

 

エクセルや数学に関するコメントをお寄せください