各関数では、式が特定のデータ型に強制的に変換されます。
- CBool(expression)
- CByte(expression)
- CCur(expression)
- CDate(expression)
- CDbl(expression)
- CDec(expression)
- CInt(expression)
- CLng(expression)
- CLngLng(expression) (64 ビットのプラットフォームでのみ有効)
- CLngPtr(expression)
- CSng(expression)
- CStr(expression)
- CVar(expression)
必須の expression 引数は、任意の文字列式または数値式です。
次に示すように、戻り値の型は関数名によって異なります。
Function | 戻り値の種類 | expression 引数の範囲 |
---|---|---|
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 | Decimal | ゼロスケールの値 (小数部分がない値) の場合は 79,228,162,514,264,337,593,543,950,335 です。 小数点以下が 28 桁の値の場合は 7.9228162514264337593543950335 です。 0 以外で可能な最小値は 0.0000000000000000000000000001 です。 |
CInt | Integer | -32,768 から 32,767。小数点以下は丸められます。 |
CLng | Long | -2,147,483,648 から 2,147,483,647。小数点以下は丸められます。 |
CLngLng | LongLong | -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807。小数点以下は丸められます (64 ビット プラットフォームのみで有効)。 |
CLngPtr | LongPtr | 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 ビットのどちらのシステムでも、小数部分は丸められます。 |
CSng | Single | 負の値の場合は -3.402823E38 ~ -1.401298E-45、正の値の場合は 1.401298E-45 ~ 3.402823E38。 |
CStr | String | CStr の戻り値は、expression 引数に依存します。 次の表を参照してください。 |
CVar | Variant | 数値の場合は Double と同じ範囲です。 数値以外の場合は String と同じ範囲です。 |
関数に渡した expression 引数の値が変換されるデータ型の範囲を超える場合はエラーが発生します。
注意
LongLong (64 ビットのプラットフォームの LongPtr を含む) をそれよりも小さい整数型に明示的に代入するには、変換関数を使用する必要があります。 LongLong をそれよりも小さい整数に暗黙的に変換することはできません。
一般に、データ型の変換関数を使用してコードを文書化し、一部の演算の結果が既定のデータ型ではなく、特定のデータ型として表示されるように指定できます。 たとえば、通常、単精度、倍精度、整数演算が発生する場合、CCur を使用して、通貨換算を強制的に実行します。
国際的に通用する 1 つのデータ型から別のデータ型に変換するには、Val ではなく、データ型の変換関数を使用する必要があります。 たとえば、CCur を使用すると、使用しているコンピューターのロケールに応じて、異なる少数点の区切り文字や桁区切り記号、さまざまな通貨オプションが適切に認識されます。
小数点以下が 0.5 の場合、CInt および CLng は、常に一番近い偶数に数値を丸めます。 たとえば、0.5 は 0 に、1.5 は 2 に丸められます。 Fix関数とInt関数は、小数部分を丸めるのではなく切り捨てるので、CInt およびCLngとは異なります。 また、Fix および Int は、常に渡されたのと同じ型の値を返します。
date を日付または時刻に変換できるかどうかを確認するには、IsDate 関数を使用します。 CDate では、日付リテラルと時刻リテラルだけでなく、許容範囲内の日付に当てはまる数字も認識されます。 数字を日付に変換すると、整数全体が日付に変換されます。 数字の分数の部分は、午前 12 時を起点にした時刻に変換されます。
CDate は、システムのロケール設定に基づいて日付の形式を認識します。 認識されている日付設定以外の書式設定が提供されている場合、日、月、年の順番を正しく決定できないことがあります。 さらに、1 週間の文字列が含まれる場合、長い日付の書式設定は認識されません。
Visual Basic の旧バージョンとの互換性のために、CVDate 関数も提供されています。 CVDate 関数の構文は CDate 関数と同じですが、CVDate では、実際の Date 型ではなく、サブタイプが Date 型である Variant 型が返されます。 組み込みの Date 型が利用できるようになったため、CVDate を使用する必要がなくなりました。 式を Date に変換してから Variant に代入することで、同じ処理を行うことができます。 これは、他のすべての組み込みタイプを同等のバリアント型サブタイプに変換する方法と同じです。
注意
CDec 関数は独立したデータ型を返しません。値が 10 進型サブタイプに変換されたバリアント型を常に返します。
CStr の戻り値は、式の引数に依存します。
expression の値 | CStr の戻り値 |
---|---|
Boolean | True または False を含む文字列。 |
Date | システムの短い日付形式の日付を含む文字列。 |
Empty | 長さ 0 の文字列 ("")。 |
Error | Error という単語とエラー番号を含む文字列。 |
Null | 実行時エラー。 |
その他の数値 | 数字を含む文字列。 |
この例では、CBool 関数を使用して、式を Boolean に変換します。 式が 0 以外の値に評価される場合は CBool から True が返され、それ以外の場合は 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 関数を使用して、式を Byte に変換します。
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
この例では、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 関数を使用し、文字列を日付型に変換します。 一般に、この例で示すように、文字列として日付と時刻をハードコードするのはお勧めしません。 文字列の代わりに、#2/12/1969#
や #4:45:23 PM#
のような日付リテラルと時刻リテラルを使用してください。
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 関数を使用して、式を 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 関数を使用して、値を Decimal に変換します。
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
この例では、CInt 関数を使用して、値を Integer に変換します。
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.
この例では、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 関数を使用して、値を 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 関数を使用して、数値を String に変換します。
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble) ' MyString contains "437.324".
この例では、CVar 関数を使用して、式を Variant に変換します。
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & 000) ' MyVar contains the string
' 4534000.
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。