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)には
変換できません。
|