データ型変換関数

適用先
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 引数は、任意の文字列または数値式です。

戻り値の型

関数名は、次の表に示すように、戻り値の型を決定します。

関数 戻り値の型 引数の範囲expression
CBool Boolean 任意の有効な文字列式または数式を指定します。
CByte Byte 0255 に変更します。
CCur Currency -922,337,203,685,477.5808922,337,203,685,477.5807 に変更します。
CDate Date 任意の有効な日付式を指定します。
CDbl Double -1.79769313486231E308を負の値に-4.94065645841247E-324します。正の値の1.79769313486232E3084.94065645841247E-324します。
CDec Decimal +/-79,228,162,514,264,337,593,543,950,335 0 スケールの数値の場合は 。小数点以下の桁数のない数値の場合は 。 小数点以下の桁数 28 数値の場合、範囲は +/-7.9228162514264337593543950335。 可能な限り最小の 0 以外の数値は 0.0000000000000000000000000001
CInt Integer -32,76832,767します。分数は丸められます。
CLng Long -2,147,483,6482,147,483,647します。分数は丸められます。
CSng Single -3.402823E38を負の値に-1.401298E-45します。正の値の3.402823E381.401298E-45します。
CStr String 戻り値は、 expression 引数によって異なります。
CVar Variant 数値の Double と同じ範囲。 数値以外の値の String と同じ範囲。

解説

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

一般に、データ型変換関数を使用してコードを文書化して、操作の結果が既定の型ではなく特定のデータ型を使用する必要があることを示すことができます。 たとえば、単精度、倍精度、または整数の算術演算が通常発生する場合は、 CCur を使用して通貨の算術演算を強制します。

Valではなくデータ型変換関数を使用して、あるデータ型から別のデータ型へのロケール対応変換を提供します。 たとえば、 CCurを使用すると、コンピューターのロケール設定に基づいて、さまざまな小数点、桁区切り記号、通貨オプションが認識されます。

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

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

CDate は、システム ロケール設定に従って日付形式を認識します。 認識された日付設定の 1 つ以外の形式を指定した場合、アクセスによって正しい日、月、年の順序が決定されない場合があります。 さらに、曜日の文字列も含まれている場合、長い日付形式は認識されません。

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

CDec関数は、個別のデータ型を返しません。 代わりに、値がDecimalサブタイプに変換されたVariantを常に返します。

クエリの例

結果
SELECT SalePrice, FinalPrice, CBool(SalePrice > FinalPrice) AS Expr1 FROM productSales; SalePriceFinalPriceを返し、SalePriceFinalPriceより大きいかどうかを評価します。 true の場合は -1 を返し、false の場合は 0 を返します。
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; ProductIDを返し、Quantity フィールドの値をByteに変換し、Expr1列に表示します。
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; ProductIDを返し、DateofSale フィールドの値をDateに変換し、Expr1列に表示します。
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; ProductIDを返し、Discount フィールドの値をDoubleに変換し、Expr1列に表示します。
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; ProductIDを返し、Discount フィールドの値をIntegerに変換し、Expr1列に表示します。
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; ProductIDを返し、Discount フィールドの値をLongに変換し、Expr1列に表示します。
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; ProductIDを返し、Discount フィールドの値をSingleに変換し、Expr1列に表示します。
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; ProductIDを返し、Discount フィールドの値をStringに変換し、Expr1列に表示します。
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; ProductIDを返し、数値Discount値を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 関数を使用して式を Byteに変換します。

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

CCur 関数

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

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 関数を使用して文字列を Dateに変換します。 一般に、この例に示すように、文字列として日付と時刻をハードコーディングすることはお勧めしません。 代わりに、 #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 関数を使用して式を Doubleに変換します。

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

CDec 関数

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

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

CInt 関数

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

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

CLng 関数

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

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 関数を使用して値を Singleに変換します。

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 関数を使用して数値を Stringに変換します。

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

CVar 関数

この例では、 CVar 関数を使用して式を Variantに変換します。

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