本ページには広告が含まれています。

ExcelVBA CInt関数 引数をInteger型に変換する

ExcelVBA CInt関数 引数をInteger型に変換する

Excel VBAの「CInt 関数」について解説します。

スポンサーリンク

CInt 関数とは

Excel VBA の CInt 関数は、引数を整数型(Integer型)に変換します。データ型変換関数のひとつです。

整数型(Integer)は、範囲が -32,768~32,767 の2バイトの整数として格納されるデータ型です。

では、CInt 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

CInt 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

CInt(expression)

引数

引数 説明
expression【必須】任意の数値(式)または文字列(式)を指定します

戻り値

戻り値説明
整数値
(Integer型)
引数を評価して整数型(Integer)に変換して返します
・Integer型の範囲は -32,768 ~ 32,767 です
・範囲外の値を指定すると「エラー 6 オーバーフロー」が発生します
・変換できない値を指定すると「エラー 13 型不一致」が発生します
・小数がある場合は丸められます
※小数部丸めの基本は四捨五入ですが 0.5 の場合だけ次の動作です
 繰り上がりが偶数になる場合だけ繰り上がり、奇数なら切り捨てます
 例)CInt(0.5)=0 , CInt(1.5)=2 , CInt(2.5)=2 , CInt(2.51)=3

解説(使用例)

サンプルコードを使って解説します。

CInt 関数の引数と戻り値を確認するサンプル

いろいろな引数を設定して結果をイミディエイトに表示させます。

'■CInt関数サンプル
Sub CInt_Sample()
  Dim v As Variant
  On Error GoTo ErrH
'▼文字列を整数値に変換する例
  v = "1,234" '半角文字(,)あり
  Debug.Print CInt(v) '(,)があってもOK
  v = "¥1,234" '全角文字
  Debug.Print CInt(v) '¥記号は認識する
  v = "1234円"
  Debug.Print CInt(v) '円は認識できずエラー
  v = "1989/9/17"
  Debug.Print CInt(v) '文字列の日付はエラー

'▼数値を整数値に変換する例
  v = 100 / 3 '33.3333333333333
  Debug.Print CInt(v) 'Double値を整数値に変換
  v = 1234.5  '0.5が切り捨てられるケース
  Debug.Print CInt(v) '1234 繰り上がりが奇数
  v = 1234.56 '0.5が繰り上がるケース(1)
  Debug.Print CInt(v) '1235 0.5のうしろがある
  v = 123.5 '0.5が繰り上がるケース(2)
  Debug.Print CInt(v) '124 繰り上がりが偶数
  
'▼ブール値を整数値に変換する例
  v = "True"
  Debug.Print CInt(v) '文字列ではエラー
  v = True
  Debug.Print CInt(v) 'True は -1 に変換されます
  v = False
  Debug.Print CInt(v) 'False は 0 に変換されます

'▼オーバーフローになる例
  v = 32768 '32767より大きい値が引数の場合
  Debug.Print CInt(v) 'オバーフローエラー
  v = -32768.51 '-32768より小さい値が引数の場合
  Debug.Print CInt(v) 'オバーフローエラー
  v = Date  '当日の日付の場合
  Debug.Print CInt(v) 'オバーフローエラー
  v = #9/16/1989# 'シリアル値32767までならOK
  Debug.Print CInt(v) '32874

  Exit Sub

'エラーハンドラー
ErrH:
  Debug.Print "エラー" & Err.Number & Err.Description
  Resume Next
End Sub

このコードを実行したイミディエイト画像がこちらです。

CInt_Sample を実行した結果のイミディエイト画像

コード内にコメントを入れているので参照願います。

補足が必要な部分だけ解説を追加します。

4行目に On Error GoTo ErrH を置いて、エラーが発生した場合処理を分岐して継続できるようにしています。

5~13行目は、引数が文字列の数値の場合、全角半角問わず数値として認識します。ただし、金額記号やコンマ(,)は認識しますがその他の文字列(空白を含む)が入るとエラーになります。また、日付文字列も同様にエラーです。

15~23行目は、引数が小数のある数値の場合の丸めについての事例です。小数が1桁だけで 0.5 の場合だけ注意が必要です。通常は四捨五入で桁上がりしますが 0.5 の場合だけは、繰る上がった整数が偶数になる場合だけ繰り上がります。奇数になる場合は切り捨てになります。

25~31行目は、ブール値(True/False)が引数の例です。文字列 “True” の場合はエラーになります。
True の戻り値は -1(VBAの場合)、False は 0 が返ります。

33~41行目まで、オーバーフローエラーになる例です。オーバーフローエラーエラーは -32,768 ~ 32,767 の範囲を外れた場合発生します。引数が日付の場合、シリアル値がこの範囲内(32767以下)ならエラーは発生しません。シリアル値32767は「1989/9/16」ですのでそれ以前ならOKということですから、それ以降は全部エラーになります。

おわりに

Excel VBA CInt 関数は、引数に指定した任意の文字列(式)または数値(式)を整数型(Integer)に変換するデータ型変換関数です。

VBAで小数のある数値を整数に変換したい場合に使いますが、Integer型の範囲は -32,768 ~ 32,767 に限られます。範囲を超えるとオーバーフローエラーが発生します。

オーバーフローする場合は、より範囲が大きい長整数型(Long型)に切り替えましょう。
Long型に変換する CLng関数については、次の記事で解説したいと思います。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!