ExcelVBAを1から学ぶ! #5 ~データ型について~


はじめに

前回のおさらいと今回やること

前回は、変数の基本的な事項について説明しました。
今回は、変数のデータ型に関して学習していきましょう。

データ型とは?

データ型とは、読んで字のごとくデータの”型”です。値がどんな型のものなのかを表しています。

基本的なデータ型

データ型一覧表をまとめておきます。

データ型 書式 範囲
バイト型 Byte 0~255の整数
ブール型 Boolean True/Falseの論理値
整数型 Integer -32768~32768の整数
長整数型 Long 約-21億~約21億の整数
通貨型 Currency 整数15桁と小数4桁の固定小数点数
10進数型 Decimal 29桁の実数
倍精度浮動小数点数型 Double 広い範囲の実数
日付型 Date 西暦100年1月1日~9999年12月31日の日付と時刻のデータ
文字列型 String 約2GBまでの文字列
オブジェクト型 Object オブジェクトの参照
バリアント型 Variant 様々なデータ型に対応

実際にデータ型を使ってみよう!

値の型ということでしたので、前回学習した変数に格納する値を型指定してみましょう。


Option Explicit

Sub SumVal()

    '変数の宣言
    Dim val1
    Dim val2
    
    '変数に値を格納する
    val1 = Range("C4").Value
    val2 = Range("D4").Value
    
    '変数を使用して計算を行う
    Range("E4").Value = val1 + val2    'セルE4に(val1 + val2)の計算結果を挿入する
    

End Sub

これが前回記述した、値1と値2を足した結果を挿入するマクロです。データ型の指定は、変数宣言時に行います。


	'変数の宣言
    Dim val1
    Dim val2

この部分を、


	'変数の宣言
    Dim val1 As Integer
    Dim val2 As Integer

このように、

As データ型の種類

という形で記述を行います。今回指定したIntegerというデータ型は整数型といい、変数”val1″と”val2″には整数の値が格納できます。逆に、整数の値以外は格納できません。

ExcelVBAデフォルトのデータ型

変数宣言時にデータ型の指定を行わなかった場合、”Variant型”というデータ型で変数が宣言されることになります。このVariant型は、固定長Stringデータ以外の任意の種類のデータを格納できるデータ型となります。要するに、基本何でも入りますよ、というデータ型になります。Variant型のおかげ(?)で、VBAではデータ型を意識せずにプログラミングを行えるようになっています。

なぜデータ型が必要なのか

ここでひとつ疑問が生じた方もいらっしゃるかと思います。デフォルトで基本何でも格納できるデータ型が用意されているのならば、毎回これを使って変数宣言を行えばよいのではないか?といった主旨の疑問です。

これは言い換えれば、データ型の存在意義を問うてるのと同義です。データ型は、プログラムを記述する際のルールの一つです。
なので、秩序だったプログラムの作成には必要不可欠なものとなります。例として、複数人で同じマクロを作成する際などはデータ型を明示的に指定した方が好ましいでしょう。逆に、自分ひとりで使う便利ツールの域を脱しえないマクロなら、データ型の指定は必要ないかもしれません。
ただし、Variant型にもデメリットはあります。それは、実行時エラーの温床となる可能性が高いということです。本来なら数値が格納されなければならない変数に、文字列が格納されてもこの段階でエラーとは当然なりません。この変数が使用された際に初めてエラーになります。
実行時エラーは解析するのに時間がかかる場合が多いです。エラーを早期に解決するために、早い段階でエラーをエラーとして認識するようプログラミングを行うことが重要です。この場合なら、変数には数値しか入りません!と宣言しておくことで、文字列が格納された段階でエラーとして処理ができます。

まとめ

今回は変数のデータ型について学習しました。データ型に関しては、他言語でも共通のものも多々ありますので、使いながら覚えていきましょう。なので、ちょこっとVBAの記述をする際でも、実際にはデータ型をしっかりと指定して慣れておいた方が後に生きてくるかと思います。Variant型は便利なのですが、今日で卒業しましよう!Variant型を用いなければならない状況は別として、データ型を指定することをおすすめします。

今回はここまでです、次回は、変数のスコープについて見ていきたいと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP