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
- -7
- -6
- -1
- 0
正解を見る
1
コメント