データ型変換関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

各関数は、式を特定のデータ型に強制します。

構文

CBool(expression)

CByte(expression)

CCur(expression)

CDate(expression)

CDbl(expression)

CDec(expression)

CInt(expression)

CLng(expression)

CSng(expression)

CStr(expression)

CVar(expression)

必須の引数は、任意の文字列式または数値式です。

戻り値の型

次に示すように、戻り値の型は関数名によって異なります。

機能 戻り値の型 引数 expression の範囲
CBool ブール値型 任意の有効な文字列式または数式を指定します。
CByte バイト型 0 から 255。
CCur 通貨型 -922,337,203,685,477.5808 から 922,337,203,685,477.5807。
CDate 日付型 任意の有効な日付式を指定します。
CDbl 倍精度浮動小数点型 -1.79769313486231E308 to
-4.94065645841247E-324 負の値の場合;4.94065645841247E-324 から 1.79769313486232E308 正の値の場合。
CDec 小数点型 小数点以下の桁数が 0 の場合 (小数部分を持たない場合)、+/-79,228,162,514,264,337,593,543,950,335。 小数点以下 28 桁の数値の場合、範囲は
+/-7.9228162514264337593543950335. 最小値は、0 を除いた場合は、0.0000000000000000000000000001。
CInt 整数型 -32,768 から 32,767。小数点以下は丸められます。
CLng 長整数型 -2,147,483,648 から 2,147,483,647。小数点以下は丸められます。
CSng 単精度浮動小数点型 -3.402823E38 から -1.401298E-45 (負の値)。1.401298E-45 から 3.402823E38 (正の値)。
CStr 文字列 CStr の戻り値は expression 引数に依存します。
CVar バリアント型 数値の場合は倍精度浮動小数点型の範囲と同です。 数値以外の場合は文字列型の範囲と同じです。

解説

関数に渡される が変換対象のデータ型の範囲外である場合は、エラーが発生します。

一般に、データ型の変換関数を使用してコードを文書化し、一部の演算の結果が既定のデータ型ではなく、特定のデータ型として表示されるように指定できます。 たとえば、通常、単精度、倍精度、整数演算が発生する場合、CCur を使用して、通貨換算を強制的に実行します。

国際的に通用する 1 つのデータ型から別のデータ型に変換するには、Val ではなく、データ型の変換関数を使用する必要があります。 たとえば、CCur を使用すると、使用しているコンピューターのロケールに応じて、異なる少数点の区切り文字や桁区切り記号、さまざまな通貨オプションが適切に認識されます。

小数部が正確に 0.5 の場合、 CIntCLng は常に最も近い偶数に丸めます。 たとえば、0.5 は 0 に、1.5 は 2 に丸めます。 CIntCLng は、数値の小数部を丸めるのではなく切り捨てる Fix 関数と Int 関数とは異なります。 また、 FixInt は 、渡されたのと同じ型の値を常に返します。

IsDate 関数を使用して、日付を日付または時刻に変換できるかどうかを判断します。 CDate は、日付リテラルと時刻リテラルと、許容される日付の範囲内にある数値を認識します。 数値を日付に変換すると、整数部分が日付に変換されます。 数値の小数部は、午前 0 時から時刻に変換されます。

CDate は、システムのロケール設定に従って日付形式を認識します。 認識されている日付設定以外の書式設定が提供されている場合、日、月、年の順番を正しく決定できないことがあります。 さらに、1 週間の文字列が含まれる場合、長い日付の書式設定は認識されません。

CVDate 関数は、以前のバージョンの Visual Basic との互換性のためにも提供されます。 CVDate 関数の構文は CDate 関数と同じですが、CVDate は、実際の Date 型ではなくサブタイプが Date である Variant を返します。 組み込みの Date 型が追加されたので、 CVDate は必要ありません。 式を Date に変換し、それを Variant に割り当てることによって同じ効果を得ることができます。 この手法は、他のすべての組み込み型を同等の Variant サブタイプに変換することと一致します。

CDec 関数は独立したデータ型を返しません。値が 10 進型サブタイプに変換されたバリアント型を常に返します。

クエリの例

Expression 結果
SELECT SalePrice,FinalPrice,CBool(SalePrice>FinalPrice) AS Expr1 FROM productSales; "SalePrice"、"FinalPrice" を返し、SalePrice が最終価格より大きいかどうかを評価します。 true の場合は "-1"、false の場合は "0" を返します。
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; "ProductID" を返し、"Quantity" フィールドの値をバイト形式に変換し、列 Expr1 に表示します。"ProductID" フィールドの値を通貨形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; "ProductID" を返し、"DateofSale" フィールドの値を Date 形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; "ProductID" を返し、[割引] フィールドの値を Double 形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; "ProductID" を返し、[割引] フィールドの値を整数形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; "ProductID" を返し、[割引] フィールドの値を Long 形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; "ProductID" を返し、[割引] フィールドの値を単一形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; "ProductID" を返し、[割引] フィールドの値を文字列形式に変換し、列 Expr1 に表示します。
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; "ProductID" を返し、数値の場合は "割引" フィールドの値を Double に変換し、数値以外の値の場合は String に変換します。

VBA の例

次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の操作の詳細については、「 ACCESS VBA リファレンス」を参照してください。

CBool 関数

この例では、 CBool 関数を使用して式を ブール型 (Boolean) に変換します。 式が 0 以外の値に評価された場合、 CBoolTrue を返します。それ以外の場合は False を返します


Dim A, B, Check
A = 5: B = 5    ' Initialize variables.
Check = CBool(A = B)    ' Check contains True.
A = 0    ' Define variable.
Check = CBool(A)    ' Check contains False.

CByte 関数

この例では、CByte 関数を使用して式をバイト型に変換します。


Dim MyDouble, MyByte
MyDouble = 125.5678    ' MyDouble is a Double.
MyByte = CByte(MyDouble)    ' MyByte contains 126.

CCur 関数

この例では、CCur 関数を使用して式を通貨型に変換します。


Dim MyDouble, MyCurr
MyDouble = 543.214588    ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)    
' Convert result of MyDouble * 2 (1086.429176) to a 
' Currency (1086.4292).

CDate 関数

この例では CDate 関数を使用し、文字列を日付型に変換します。 一般に、この例で示すように、文字列として日付と時刻をハードコードするのはお勧めしません。 代わりに、2/12/1969# や #4:45:23 PM# などの日付リテラルを使用します。


Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969" 
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM" 
' Convert to Date data type.
MyShortTime = CDate(MyTime)

CDbl 関数

この例では、CDbl 関数を使用して式を倍精度浮動小数点型に変換します。


Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)

CDec 関数​​

この例では、CDec 関数を使用して数値を 10 進型に変換します。


Dim MyDecimal, MyCurr
MyCurr = 10000000.0587    ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr)     ' MyDecimal is a Decimal.

CInt 関数

この例では、CInt 関数を使用して値を整数型に変換します。


Dim MyDouble, MyInt
MyDouble = 2345.5678    ' MyDouble is a Double.
MyInt = CInt(MyDouble)    ' MyInt contains 2346.

CLng 関数

この例では、CLng 関数を使用して値を長整数型に変換します。


Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55  ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.

CSng 関数

この例では、CSng 関数を使用して値を単精度浮動小数点型に変換します。


Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.

CStr 関数​​

この例では、CStr 関数を使用して数値を文字列型に変換します。


Dim MyDouble, MyString
MyDouble = 437.324    ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".

CVar 関数

この例では、CVar 関数を使用して式をバリアント型に変換します。


Dim MyInt, MyVar
MyInt = 4534    ' MyInt is an Integer.
MyVar = CVar(MyInt & "000") 
' MyVar contains the string 4534000.