データ型変換関数

各関数では、式が特定のデータ型に強制的に変換されます。

構文

  • 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 進型 サブタイプに変換された バリアント型 を常に返します。

CBool 関数の例

この例では、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 関数の例

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

この例では、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 関数の例

この例では、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. 

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。