HOME > 即効テクニック > Excel VBA > 関数関連のテクニック > データ型の変数(11種類のデータ型変換関数)

即効テクニック

関数関連のテクニック

データ型の変数(11種類のデータ型変換関数)

(Excel 2000)
Excel2000 VBAには、データを特定のデータ型に変換するデータ型変換関数が用意されており、データを特定のデータ型に変換することが可能です。
データ型変換関数は、次の一覧のとおりです。


・データ型変換関数一覧表
関数	戻り値のデータ型               変換できる値の範囲
CBool	ブール型(Boolean)              任意の有効な文字列または数式
CByte	バイト型(Byte)                 0 〜 255
CCur	通貨型(Currency)               -922,337,203,685,477.5808 〜 
                                       922,337,203,685,477.5807
CDate	日付型(Date)                   任意の有効な日付式
CDbl	倍精度浮動小数点数型(Double)   負の値 : -1.79769313486231E308 〜 
                                       -4.94065645841247E-324
                                       正の値 : 4.94065645841247E-324 〜 
                                       1.79769313486232E308
CDec	10 進型(Decimal)               小数点以下が 0 桁 (小数部分を持た
                                       ない数値) の場合、
                                       -79,228,162,514,264,337,593,543,950,335 〜 
                                       79,228,162,514,264,337,593,543,950,335
                                       小数点以下 28 桁の数値の場合、
                                       -7.9228162514264337593543950335 〜 
                                       7.9228162514264337593543950335
CInt	整数型(Integer)                -32,768 〜 32,767小数部分は丸められます。
CLng	長整数型(Long)                 -2,147,483,648 〜 2,147,483,647小数部分
                                       は丸められます。
CSng	単精度浮動小数点数型(Single)   負の値 : -3.402823E38 〜 -1.401298E-45、
                                       正の値 : 1.401298E-45 〜 3.402823E38
CVar	バリアント型(Variant)          数値の場合は倍精度浮動小数点数型の範囲
                                       と同じ数値以外の場合は、文字列型の範囲
                                       と同じ
CStr	文字列型(String)               CStr 関数の戻り値は引数 expression により
                                       異なる


  構文 データ型変換関数(Expression)

  設定項目                     内容
  Expression                   変換の対象となる数値や数式を指定[省略不可]
  NumDigitsAfterDecimal        小数点以下に表示する桁数を指定[省略可能]
  IncludeLeadingDigit          小数点の左側のゼロを表示するかどうか[省略可能]
  UseParensForNegativeNumbers  負の値の場合に値を括弧で囲むかどうか[省略可能]
  GroupDigits                  桁区切りを表示するかどうか[省略可能]


次のサンプルで、例えば"124.5"という数字が、それぞれのデータ型変換関数によって、どのように変換されるかを確認してください。

●サンプル●
Sub データ型変換関数Samp1()
    Dim V As Variant
    Dim myStr(11) As String
    Dim i As Integer, myMsg As String
    V = 124.51          '---変換前の数字
    myStr(0) = "変換前" & vbTab & V & vbTab & TypeName(V) & vbCr & _
               "----------------------------------" & vbCr
    myStr(1) = "CBool" & vbTab & CBool(V) & vbTab & TypeName(CBool(V)) & vbCr
    myStr(2) = "Cbyte" & vbTab & CByte(V) & vbTab & TypeName(CByte(V)) & vbCr
    myStr(3) = "CCur" & vbTab & CCur(V) & vbTab & TypeName(CCur(V)) & vbCr
    myStr(4) = "CDate" & vbTab & CDate(V) & vbTab & TypeName(CDate(V)) & vbCr
    myStr(5) = "CDbl" & vbTab & CDbl(V) & vbTab & TypeName(CDbl(V)) & vbCr
    myStr(6) = "CDec" & vbTab & CDec(V) & vbTab & TypeName(CDec(V)) & vbCr
    myStr(7) = "CInt" & vbTab & CInt(V) & vbTab & TypeName(CInt(V)) & vbCr
    myStr(8) = "CLng" & vbTab & CLng(V) & vbTab & TypeName(CLng(V)) & vbCr
    myStr(9) = "CSng" & vbTab & CSng(V) & vbTab & TypeName(CSng(V)) & vbCr
    myStr(10) = "CVar" & vbTab & CVar(V) & vbTab & TypeName(CVar(V)) & vbCr
    myStr(11) = "CStr" & vbTab & CStr(V) & vbTab & TypeName(CStr(V))
    For i = 0 To 11
       myMsg = myMsg & myStr(i)
    Next i
    MsgBox myMsg
End Sub
●解説●
Boolean型では、0以外の数値はすべてTrueとなります。また、小数部を持たないByte型、Integer型、Long型では、小数部の絶対値が0.5より大きい場合は切り上げで丸めの処理が行われるため、125という値になっています。
0.5以下の場合には切り捨てられるため、Round関数の丸め処理とは異なることに注意してください。また、Date型に変換された際には、数値はシリアル値とみなされて変換が行われます。

●補足●
それぞれのデータ型の有効範囲を超える値を変換しようとした際にはエラーが発生します。
例えば、40,000という数値はInteger型(有効範囲-32,768 〜 32,767)には変換できません。