Int関数、Abs関数のポイント

VBAエキスパート試験では、さまざまな関数について知っておく必要がある。このページでは、Int関数とAbs関数のポイントについて解説する。

スポンサーリンク

Int関数のポイント

Int関数は、数値を整数に変換する。次のプロシージャを実行すると、メッセージボックスに「2」と表示される。

'2と表示される
Sub Test()
    MsgBox Int(2.4)
End Sub

ここでポイントとなるのは、四捨五入ではないという点だ。Int関数は、小数点をすべて切り捨てる。よって、次のプロシージャもメッセージボックスに「2」と表示される(3 ではない)。

'2と表示される
Sub Test()
    MsgBox Int(2.7)
End Sub

似たような関数にCInt関数というものがある。こちらは四捨五入する。
(正確には銀行型の丸めをおこなう。説明は省略)

'3と表示される
Sub Test()
    MsgBox CInt(2.7)
End Sub

負の数値に対する扱いにも注意が必要だ。次のプロシージャを実行したとき、メッセージボックスに表示されるのは数値の「-2」と「-3」のどちらだろうか?

Sub Test()
    MsgBox Int(-2.4)
End Sub

……

答えは「-3」だ。正の数も負の数も、値が小さくなる方向に変換される。

Abs関数のポイント

Abs関数は、数値の絶対値を返す。次のプロシージャを実行すると、メッセージボックスに「5」と表示される。

'5と表示される
Sub Test()
    MsgBox Abs(-5)
End Sub

引数に正の数を指定した場合、その数がそのまま返ってくる。

'10と表示される
Sub Test()
    MsgBox Abs(10)
End Sub

ちなみにAbsはAbsolute(=絶対の、絶対的な)の略だ。

非常にシンプルな関数なので、特記するべきポイントはない……。が、しいて言うなら引数に小数を指定した場合に注意したい。Abs関数は絶対値を返すだけなので、小数を指定しても整数に変換する機能は持っていない。
(エキスパート試験のひっかけ選択肢で出るかも?)

'7.3と表示される
Sub Test()
    MsgBox Abs(-7.3)
End Sub

練習問題

次のプロシージャを実行した。メッセージボックスに表示される数値として正しいものはどれか。次の中から1つ選択しなさい。

Sub Test()
    MsgBox Int(-3.2) - Abs(-3)
End Sub

  1. -7
  2. -6
  3. -1
  4. 0

正解を見る

1

コメント