データ型変換関数Type conversion functions

各関数では、式が特定のデータ型に強制的に変換されます。Each function coerces an expression to a specific data type.

構文Syntax

  • CBool(expression)CBool(expression)
  • CByte(expression)CByte(expression)
  • CCur(expression)CCur(expression)
  • CDate(expression)CDate(expression)
  • CDbl(expression)CDbl(expression)
  • CDec(expression)CDec(expression)
  • CInt(expression)CInt(expression)
  • CLng(expression)CLng(expression)
  • CLngLng(expression) (64 ビットのプラットフォームでのみ有効)CLngLng(expression) (Valid on 64-bit platforms only.)
  • CLngPtr(expression)CLngPtr(expression)
  • CSng(expression)CSng(expression)
  • CStr(expression)CStr(expression)
  • CVar(expression)CVar(expression)

必須の expression 引数は、任意の文字列式または数値式です。The required expression argument is any string expression or numeric expression.

戻り値の型Return types

次に示すように、戻り値の型は関数名によって異なります。The function name determines the return type as shown in the following:

FunctionFunction 戻り値の種類Return type expression 引数の範囲Range for expression argument
CBoolCBool BooleanBoolean 任意の有効な文字列式または数式を指定します。Any valid string or numeric expression.
CByteCByte ByteByte 0 から 255。0 to 255.
CCurCCur CurrencyCurrency -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807。-922,337,203,685,477.5808 to 922,337,203,685,477.5807.
CDateCDate DateDate 任意の有効な日付式。Any valid date expression.
CDblCDbl DoubleDouble 負の値の場合は -1.79769313486231E308 ~ -4.94065645841247E-324、正の値の場合は 4.94065645841247E-324 ~ 1.79769313486232E308。-1.79769313486231E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values.
CDecCDec DecimalDecimal ゼロスケールの値 (小数部分がない値) の場合は 79,228,162,514,264,337,593,543,950,335 です。79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places. 小数点以下が 28 桁の値の場合は 7.9228162514264337593543950335 です。For numbers with 28 decimal places, the range is 7.9228162514264337593543950335. 0 以外で可能な最小値は 0.0000000000000000000000000001 です。The smallest possible non-zero number is 0.0000000000000000000000000001.
CIntCInt IntegerInteger -32,768 から 32,767。小数点以下は丸められます。-32,768 to 32,767; fractions are rounded.
CLngCLng LongLong -2,147,483,648 から 2,147,483,647。小数点以下は丸められます。-2,147,483,648 to 2,147,483,647; fractions are rounded.
CLngLngCLngLng LongLongLongLong -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807。小数点以下は丸められます -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807; fractions are rounded. (64 ビット プラットフォームのみで有効)。(Valid on 64-bit platforms only.)
CLngPtrCLngPtr LongPtrLongPtr 32 ビットのシステムでは -2,147,483,648 ~ 2,147,483,647、64 ビットのシステムでは -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807。32 ビットと 64 ビットのどちらのシステムでも、小数部分は丸められます。-2,147,483,648 to 2,147,483,647 on 32-bit systems, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 on 64-bit systems; fractions are rounded for 32-bit and 64-bit systems.
CSngCSng SingleSingle 負の値の場合は -3.402823E38 ~ -1.401298E-45、正の値の場合は 1.401298E-45 ~ 3.402823E38。-3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values.
CStrCStr StringString CStr の戻り値は、expression 引数に依存します。Returns for CStr depend on the expression argument.
CVarCVar VariantVariant 数値の場合は Double と同じ範囲です。Same range as Double for numerics. 数値以外の場合は String と同じ範囲です。Same range as String for non-numerics.

解説Remarks

関数に渡した expression 引数の値が変換されるデータ型の範囲を超える場合はエラーが発生します。If the expression passed to the function is outside the range of the data type being converted to, an error occurs.

注意

LongLong (64 ビットのプラットフォームの LongPtr を含む) をそれよりも小さい整数型に明示的に代入するには、変換関数を使用する必要があります。Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. LongLong をそれよりも小さい整数に暗黙的に変換することはできません。Implicit conversions of LongLong to smaller integrals are not allowed.

一般に、データ型の変換関数を使用してコードを文書化し、一部の演算の結果が既定のデータ型ではなく、特定のデータ型として表示されるように指定できます。In general, you can document your code using the data-type conversion functions to show that the result of some operation should be expressed as a particular data type rather than the default data type. たとえば、通常、単精度、倍精度、整数演算が発生する場合、CCur を使用して、通貨換算を強制的に実行します。For example, use CCur to force currency arithmetic in cases where single-precision, double-precision, or integer arithmetic normally would occur.

国際的に通用する 1 つのデータ型から別のデータ型に変換するには、Val ではなく、データ型の変換関数を使用する必要があります。You should use the data-type conversion functions instead of Val to provide internationally aware conversions from one data type to another. たとえば、CCur を使用すると、使用しているコンピューターのロケールに応じて、異なる少数点の区切り文字や桁区切り記号、さまざまな通貨オプションが適切に認識されます。For example, when you use CCur, different decimal separators, different thousand separators, and various currency options are properly recognized depending on the locale setting of your computer.

小数点以下が 0.5 の場合、CInt および CLng は、常に一番近い偶数に数値を丸めます。When the fractional part is exactly 0.5, CInt and CLng always round it to the nearest even number. たとえば、0.5 は 0 に、1.5 は 2 に丸められます。For example, 0.5 rounds to 0, and 1.5 rounds to 2. Fix関数とInt関数は、小数部分を丸めるのではなく切り捨てるので、CInt およびCLngとは異なります。CInt and CLng differ from the Fix and Int functions, which truncate, rather than round, the fractional part of a number. また、Fix および Int は、常に渡されたのと同じ型の値を返します。Also, Fix and Int always return a value of the same type as is passed in.

date を日付または時刻に変換できるかどうかを確認するには、IsDate 関数を使用します。Use the IsDate function to determine if date can be converted to a date or time. CDate では、日付リテラルと時刻リテラルだけでなく、許容範囲内の日付に当てはまる数字も認識されます。CDate recognizes date literals and time literals as well as some numbers that fall within the range of acceptable dates. 数字を日付に変換すると、整数全体が日付に変換されます。When converting a number to a date, the whole number portion is converted to a date. 数字の分数の部分は、午前 12 時を起点にした時刻に変換されます。Any fractional part of the number is converted to a time of day, starting at midnight.

CDate は、システムのロケール設定に基づいて日付の形式を認識します。CDate recognizes date formats according to the locale setting of your system. 認識されている日付設定以外の書式設定が提供されている場合、日、月、年の順番を正しく決定できないことがあります。The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings. さらに、1 週間の文字列が含まれる場合、長い日付の書式設定は認識されません。In addition, a long date format is not recognized if it also contains the day-of-the-week string.

Visual Basic の旧バージョンとの互換性のために、CVDate 関数も提供されています。A CVDate function is also provided for compatibility with previous versions of Visual Basic. CVDate 関数の構文は CDate 関数と同じですが、CVDate では、実際の Date 型ではなく、サブタイプが Date 型である Variant 型が返されます。The syntax of the CVDate function is identical to the CDate function; however, CVDate returns a Variant whose subtype is Date instead of an actual Date type. 組み込みの Date 型が利用できるようになったため、CVDate を使用する必要がなくなりました。Since there is now an intrinsic Date type, there is no further need for CVDate. 式を Date に変換してから Variant に代入することで、同じ処理を行うことができます。The same effect can be achieved by converting an expression to a Date, and then assigning it to a Variant. これは、他のすべての組み込みタイプを同等のバリアント型サブタイプに変換する方法と同じです。This technique is consistent with the conversion of all other intrinsic types to their equivalent Variant subtypes.

注意

CDec 関数は独立したデータ型を返しません。値が 10 進型サブタイプに変換されたバリアント型を常に返します。The CDec function does not return a discrete data type; instead, it always returns a Variant whose value has been converted to a Decimal subtype.

CBool 関数の例CBool function example

この例では、CBool 関数を使用して、式を Boolean に変換します。This example uses the CBool function to convert an expression to a Boolean. 式が 0 以外の値に評価される場合は CBool から True が返され、それ以外の場合は False が返されます。If the expression evaluates to a nonzero value, CBool returns True, otherwise, it returns 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 function example

この例では、CByte 関数を使用して、式を Byte に変換します。This example uses the CByte function to convert an expression to a Byte.

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

CCur 関数の例CCur function example

この例では、CCur 関数を使用して、式を Currency に変換します。This example uses the CCur function to convert an expression to a 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 function example

この例では CDate 関数を使用し、文字列を日付型に変換します。This example uses the CDate function to convert a string to a Date. 一般に、この例で示すように、文字列として日付と時刻をハードコードするのはお勧めしません。In general, hard-coding dates and times as strings (as shown in this example) is not recommended. 文字列の代わりに、#2/12/1969##4:45:23 PM# のような日付リテラルと時刻リテラルを使用してください。Use date literals and time literals, such as #2/12/1969# and #4:45:23 PM#, instead.

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

CDbl 関数の例CDbl function example

この例では、CDbl 関数を使用して、式を Double に変換します。This example uses the CDbl function to convert an expression to a Double.

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

CDec 関数の例CDec function example

この例では、CDec 関数を使用して、値を Decimal に変換します。This example uses the CDec function to convert a numeric value to a Decimal.

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

CInt 関数の例CInt function example

この例では、CInt 関数を使用して、値を Integer に変換します。This example uses the CInt function to convert a value to an Integer.

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

CLng 関数の例CLng function example

この例では、CLng 関数を使用して、値を Long に変換します。This example uses the CLng function to convert a value to a 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 function example

この例では、CSng 関数を使用して、値を Single に変換します。This example uses the CSng function to convert a value to a 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 function example

この例では、CStr 関数を使用して、数値を String に変換します。This example uses the CStr function to convert a numeric value to a String.

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


CVar 関数の例CVar function example

この例では、CVar 関数を使用して、式を Variant に変換します。This example uses the CVar function to convert an expression to a Variant.

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

関連項目See also

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.