CSng関数

CSng関数は、VBA関数の中でデータ型変換関数に分類される関数です。

目次

スポンサー リンク

CSng関数とは

CSng関数は、式を特定のデータ型に変換します。

構文CSng(expression)
引数省略説明
expression ×引数 expression には任意の文字列式または数式を指定します。

戻り値

戻り値のデータ型引数 expression の範囲
単精度浮動小数点数型 (Single)-3.402823E38 ~ -1.401298E-45 (負の値)、および 1.401298E-45 ~ 3.402823E38 (正の値)。

関数に渡された引数 expression の値が変換されるデータ型の範囲を超えている場合、エラーが発生します。通常、既定のデータ型ではなく、特定のデータ型で処理結果を表す必要がある場合に、データ型変換関数を使用してコードを記述します。たとえば、単精度、倍精度、または整数で計算を行うような場合に、CCur 関数を使用して通貨の演算を強制的に行います。

各国の言語に対応するようにあるデータから別のデータに変換する場合は、Val 関数の代わりにデータ型変換関数を使用します。たとえば CCur 関数を使用すると、異なる小数点記号と 1000 単位の区切り記号、およびさまざまな通貨記号がコンピュータの国別情報の設定に応じて正しく処理されます。

小数部分がちょうど 0.5 のとき、CInt 関数および CLng 関数は常に最も近い偶数に値を丸めます。たとえば、0.5 を 0 に、1.5 を 2 にそれぞれ丸めます。CInt 関数および CLng 関数は、数値の小数部分を切り捨てずに丸めるという点で Fix 関数および Int 関数とは異なります。また、Fix 関数および Int.関数は引き渡された値と同じデータ型で常に値を返します。

IsDate 関数を使用すると、引数 date を日付または時刻に変換できるかどうかを調べることができます。CDate 関数は、日付リテラル、時刻リテラル、および有効な日付の範囲に該当する数値を引数として受け取ります。数値を日付に変更する場合、整数部が日付に変換されます。小数点以下の値は、午前 0 時から始まる時刻に変換されます。

CDate 関数は、国別情報に基づいて日付の形式を認識します。認識できない形式で指定された日付がある場合、年、月、および日の正しい順序を判断できないことがあります。また、曜日を表す文字列を含む長い日付形式も認識できません。

Visual Basic の以前のバージョンとの互換性を保つため、CVDate 関数も用意されています。CVDate 関数の構文は、CDate 関数と同じです。ただし、CVDate 関数は日付型ではなく、内部処理形式が Date のバリアント型の値を返します。現在はデータ型として日付型が用意されているので、CVDate 関数は今後必要なくなります。日付型に式を変換し、バリアント型に割り当てることにより、CVDate 関数と同じ戻り値を得ることができます。他のデータ型をバリアント型の内部処理形式に変換する場合も、同じ方法で変換します。CDec 関数は独立したデータ型で値を返しません。常に内部処理形式 Decimal のバリアント型で値を返します。

CSng関数のサンプルコード

次の例は、CSng 関数を使って、値を単精度浮動小数点数型 (Single) に変換します。


Sub sample()

Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1、MyDouble2 は、倍精度浮動小数点数型です。
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)    ' MySingle1 には、75.34211 が入ります。
MySingle2 = CSng(MyDouble2)    ' MySingle2 には、75.34216 が入ります。

End Sub

実行結果

解説

データ型変換関数一覧

関数名内容
CBool指定した式をブール型に変換します。
CByte指定した式をバイト型に変換します。
CCur指定した式を通貨型に変換します。
CDate指定した式を日付型に変換します。
CDbl指定した式を倍精度浮動小数点数型に変換します。
CDec指定した式を10進型に変換します。
CInt指定した式を整数型に変換します。
CLng指定した式を長整数型に変換します。
CSng指定した式を単精度浮動小数点数型に変換します。
CStr指定した式を文字列型に変換します。
CVar指定した式をバリアント型に変換します。
CVDate旧バージョンと互換を保つための関数で、バリアント型の日付を返します。
Int指定した数値の整数部分を抽出します。指定した数値が負の場合は、値を超えない最大の負の整数を抽出します。
IsDate式が日付に変換できるかどうかを調べた結果を返します。
IsEmpty変数がEmptyかどうかを調べた結果を返します。
IsMissingプロシージャに省略可能なバリアント型の引数がわたされたかどうかを調べた結果を返します。
IsNumeric式にNull値が含まれているかどうかを調べた結果を返します。
IsObject変数がオブジェクト変数かどうかを調べた結果を返します。
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。