この記事ではAbs関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
Abs関数の使い方と注意点
Abs関数は、数値の絶対値(0 からの距離)を返す関数です。
正の数はそのまま、負の数は符号を取り除いて返します。
構文
Abs(数値)
- 数値 : 絶対値を返したい数値または式
- 戻り値 : 数値の絶対値
使用例
こちらの例では10
, -5
, 0
という数値に対し、Abs
関数を実行しています。
Sub Sample()
Debug.Print "Abs(10) : " & Abs(10)
Debug.Print "Abs(-5) : " & Abs(-5)
Debug.Print "Abs(0) : " & Abs(0)
End Sub
▶ 出力結果
Abs(10) : 10
Abs(-5) : 5
Abs(0) : 0
各数値の絶対値(0からの距離)が戻り値となっていることが分かります。
⚠️注意
数値がNullの場合は戻り値が"Null"になる。
数値がNullの場合戻り値が"Null"になります。
Sub Sample()
Debug.Print Abs(Null)
End Sub
▶ 出力結果
Null
IsNull
関数等で事前チェックし意図した出力になるようにしましょう。
戻り値の型は引数の型に準じる
戻り値の型は引数の型に応じて変化します。
Sub Sample()
Dim MyInteger As Integer
Dim MyDouble As Double
MyInteger = -123
Debug.Print "Abs(MyInteger) : " & TypeName(Abs(MyInteger))
MyDouble = -456.789
Debug.Print "Abs(MyDouble) : " & TypeName(Abs(MyDouble))
End Sub
▶ 出力結果
Abs(MyInteger) : Integer
Abs(MyDouble) : Double
一部の型(String型やBoolean型等)に使用した場合は引数と戻り値の型が異なります。
引数の型と戻り値として使用したい型には注意しましょう。
Sub Sample()
Dim MyString As String
Dim MyBoolean As Boolean
MyString = -456
Debug.Print "Abs(MyString) : " & TypeName(Abs(MyString))
MyBoolean = 1
Debug.Print "Abs(MyBoolean) : " & TypeName(Abs(MyBoolean))
End Sub
▶ 出力結果
Abs(MyString) : Double
Abs(MyBoolean) : Integer
数値(半角または全角)以外はエラーになる
Abs関数の引数に半角または全角の数値
以外を指定するとエラーになります。
Sub Sample()
On Error Resume Next
Err.Clear
Debug.Print "半角英字 : " & Abs("Abc")
If Err.Number <> 0 Then Debug.Print "半角英字 : エラー:" & Err.Description
Err.Clear
Debug.Print "全角英字 : " & Abs("Abc")
If Err.Number <> 0 Then Debug.Print "全角英字 : エラー:" & Err.Description
Err.Clear
Debug.Print "ひらがな : " & Abs("あいう")
If Err.Number <> 0 Then Debug.Print "ひらがな : エラー:" & Err.Description
Err.Clear
Debug.Print "漢字 : " & Abs("亜伊宇")
If Err.Number <> 0 Then Debug.Print "漢字 : エラー:" & Err.Description
Err.Clear
Debug.Print "半角記号 : " & Abs("!?#")
If Err.Number <> 0 Then Debug.Print "半角記号 : エラー:" & Err.Description
Err.Clear
Debug.Print "全角記号 : " & Abs("!?#")
If Err.Number <> 0 Then Debug.Print "全角記号 : エラー:" & Err.Description
Err.Clear
Debug.Print "半角数字 : " & Abs("-1.23")
If Err.Number <> 0 Then Debug.Print "半角数字 : エラー:" & Err.Description
Err.Clear
Debug.Print "全角数字 : " & Abs("-1.23")
If Err.Number <> 0 Then Debug.Print "全角数字 : エラー:" & Err.Description
Err.Clear
Debug.Print "スペース : " & "[" & Abs("1. 2 3") & "]"
If Err.Number <> 0 Then Debug.Print "スペース : エラー:" & Err.Description
On Error GoTo 0
End Sub
▶ 出力結果
半角英字 : エラー:型が一致しません。
全角英字 : エラー:型が一致しません。
ひらがな : エラー:型が一致しません。
漢字 : エラー:型が一致しません。
半角記号 : エラー:型が一致しません。
全角記号 : エラー:型が一致しません。
半角数字 : 1.23
全角数字 : 1.23
スペース : エラー:型が一致しません。
上記ではエラー発生時にエラーを無視して次の処理を実行するよう記述していますが、
エラーを無視する記述が無い場合、エラー時に処理が止まってしまいます。
引数に渡す内容には注意しましょう。
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方