VBAで集計業務をする際に、最低限覚えておきたいデータ型について解説します。「変数の宣言を強制する」の内容にも関係が深い内容です。
VBAのデータ型は、実は10種類以上あります。ですが、ここでは簡単にVBA集計業務に最低限必要な内容に絞ってお話しすることにします。
目次
文字列型 (String型)
以前MgsBox関数の引数に使った"Hello! World!"など、"(ダブルクォーテーション)で囲まれたデータの型を文字列型と言います。
集計業務の例でいいますと、名前、住所、商品名、社員氏名、部署名などのデータは文字列型で扱います。
例えば、名前で山田だと"山田"、住所で東京から始まる住所の場合、"東京都~3-2-4"などのように必ず " (ダブルクォーテーション)で囲ってくださいね。
オブジェクト型(worksheet, workbook, rangeなど)
Excelでいうブック、シート、セルなどをVBAで取り扱う場合、オブジェクト型変数にセットしてコード上で管理します。
VBA集計業務では、集計の際に、複数のブックや複数のシートにまたがって集計することが頻繁にあります。つまり、コードの中に複数のオブジェクトが登場しますので、その1つ1つをコードの中で識別しながら集計する必要が出てきます。
このオブジェクト型の変数の取り扱い方法の詳細については、VBAで集計業務をする上でもとても大切なスキルになります。本サイトでも別記事で取り上げておりますので、ぜひともご覧いただきたいと思います。
整数型(Integer)、長整数型(Long)
これらはともに整数を扱うデータ型です。違いは扱える整数の範囲が異なります。整数型は、-32,768~32,767、長整数型は、-2,147,483,648~2,147,483,647になります。
VBA集計業務では、PC性能に余裕があれば、つねに長整数型を使うのでも問題ないです。
単精度浮動小数点型(Single)、倍精度浮動小数点型(Double)
これらは、小数点つきデータを変数で扱う際のデータ型です。
小数点つきデータを扱う際は、こちらのデータ型を使用します。かりに小数点つきデータを、前述の整数型、長整数型で扱うと、小数点以下が切り捨てられてしまいます。
そうなると、最終的な集計結果も間違えたものになりますので、元のデータが小数点を扱うか扱わないかには特に注意してください。
こちらも、PC性能に余裕があれば、倍精度浮動小数点型を使うのでも問題ないです。
バリアント型(Variant)
バリアント型は、整数、文字列、日付、などいろいろなデータ型を入れられる変数です。VBA集計業務でもよく使うデータ型で、特にExcelシートのデータ範囲を一括で格納する配列処理では、データ上の様々なデータ型をまとめて1つの配列に格納できますので、必ずと言ってよいほど使います。
ブール型(Boolean)
ブール型は、2値(True/False)しかとらないデータ型です。2値しかとらないデータ(参加する/参加しない、有/無など)に使いますが、VBA集計業務では、集計条件の判別などにもよく使います。
通貨型(Currency)
売上、経費などお金を扱う場合に使います。通常日本円であれば、長整数型でも良いのですが、扱う金額が膨大であれば通貨型を使います。通貨型で取り扱える範囲は、-922,337,203,685,477.5808~922,337,203,685,477.5807だからです。
また、少額の日本円を扱う場合でも、金額の平均などを求めた際に小数点表示が必要だったり、外貨を扱う場合には通貨型は必須です。
日付型(Date)
日付と時刻を扱うデータ型です。VBA集計業務で使う例としては、例えば金融系の外貨定期預金などの満期日計算などの日数計算で使います。
なおExcelでは、日付や時刻をシリアル値という連続する値で取り扱います。シリアル値とは、英語のSerialのことで「連続の」という意味合いを持ちます。Excelでは、1900/1/1をシリアル値1として以降に続く日にちを+1づつ加算して管理します。
下図の例では、2019/4/5は1990/1/1から数えて43560日目ということになります。また、その1年後の2020/4/5は366日というように日数の計算も簡単にできるようになってます。

日付/時刻とシリアル値の関係
また時刻については、小数で管理しています。図の例でいうと、1900/1/1 00:00:00から1900/1/1 12:00:00の時間差は12時間で半日になりますから、シリアル値の整数1が1日分と考えますと、半日は0.5日(12時間)ということになりますよね。
まとめ
VBAのデータ型について、特に集計業務で頻繁に使うものについて、簡単にご紹介しました。またこれから紹介する色々なサンプルコードの中でも、必要に応じて詳しくお話ししますね。