変数のデータ型

これまでは変数の宣言場所とか方法を説明しましたが、本来は変数には「データ型」があり、宣言する時にどの変数がどの「データ型」なのかを明示することが重要です。
「データ型」とは、その変数の用途を明確にするものです。
例えば「数値」なのか、「数値」でも「整数」なのか「実数」なのか等です。
変数の宣言については前々項で説明していますが、「あれ」では「データ型」が判りません。そこで、実際は次のように宣言します。


'***************************************************************************************************
'   データ型の説明
'
'   作成者:井上治  URL:http://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
Option Explicit

'***************************************************************************************************
' ※プロシージャレベルで説明しますが、モジュールレベルでも同じです。
'  これは一般的によく使うデータ型です。
'***************************************************************************************************
Sub TEST()
     ' 文字列型
    Dim A As String             ' 0〜2GB
    Dim B As String * 10        ' 10文字に限定

    ' 整数型
    Dim C As Integer            ' -32,768〜32,767の範囲
    Dim D As Long               ' -2,147,483,648〜2,147,483,647の範囲

    ' 実数型
    Dim E As Single             ' -3.402823E38〜-1.401298E-45(負),
                                ' 1.401298E-45〜3.402823E38(正)の範囲
    Dim F As Double             ' -1.79769313486232E308〜-4.94065645841247E-324(負),
                                ' 4.94065645841247E-324〜1.79769313486232E308(正)の範囲
    ' 通貨型
    Dim G As Currency           ' -922,337,203,685,477.5808〜922,337,203,685,477.5807

     ' バイト型
    Dim H As Byte               ' 0〜255の範囲

    ' ブール型
    Dim I As Boolean            ' 真(True)又は偽(False)

     ' 日付型
    Dim J As Date               ' 西暦100年1月1日〜西暦9999年12月31日

    ' バリアント型
    Dim K As Variant            ' データ型を明示しない時と同じ

End Sub

'------------------------------------------<< End of Source >>--------------------------------------

ここで、「数値」を扱うデータ型の種類が多いことに気が付くと思います。プログラム内で行や列、テーブルのインデックスを扱うのであれば、整数型の「Long」を使うと良いでしょう。32ビットアプリケーションになって「Integer」を使う意味はほとんどありません。
一方、金額を扱うのであれば通貨型である「Currency」を使います。円単位で小数がないと言っても「Long」では大きい企業の売上などでは桁あふれしてしまいます。また、実数型(浮動小数点型)は小数部に大きい桁数を割り当てる場合など学術的な用途に多く用いられますが、大きい桁数は途中から指数表現になってしまうことや、乗除算で誤差が伴うなどの問題があり、金銭を扱うには不向きです。但し、セルの書式が「標準」になっているところに「Currency」の変数から値を転記すると「¥」が付いてしまいます。
  • String」は文字列のデータ型です。桁数を指定しない場合は、セットした文字列によって可変長となります。桁数を指定していて、その桁数に満たない文字列をセットすると、右部分はスペースが埋められます。
  • Boolean」はブール型といって、値は「True」「False」のいずれかです。(初期値は「False」)
  • Date」は日付・時刻のデータ型(一般には「日付型」)です。日付・時刻は「シリアル値」を表示上で日付・時刻に編集表示するもので、実際には「1900/1/1 0:00」が内部値「1」となり、1日が「1」ずつ増える値を採ります。従って、前日や翌日の算出は「Date」の変数に対して1を加減算するだけで済むわけです。
  • データ型はこれで全てではありません。ですが、次に説明するオブジェクト型を除くと、事務系処理ではこれで充分だと思います。数値を扱うデータ型での桁数の限度については留意して下さい。