Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 – データ型理解

Excel VBA VBA
スポンサーリンク

「データ型」は“箱の種類”だと思うと分かりやすい

変数は「値を入れておく箱」でしたよね。
データ型は、その箱の「種類」です。

お菓子の箱、ペットボトル、ガラス瓶――入れられる中身や量が違うように、
VBAの変数も「整数用の箱」「小数用の箱」「文字列用の箱」「日付用の箱」など、用途ごとに種類が決まっています。

ここをなんとなくで済ませると、
「桁が足りない」「思った通りに計算されない」「文字列と数値がごちゃごちゃ」
みたいな“モヤモヤバグ”が増えます。

逆に、データ型の感覚がつかめると、
「この値はこの型で持つのが一番安全だな」
と判断できるようになって、コードの質が一段上がります。


VBAでよく使うデータ型をざっくり俯瞰する

まずはこの4つを押さえる

超初心者の段階で、まずしっかり仲良くなってほしいのはこの4つです。

数値(整数):Long
数値(小数):Double
文字列:String
日付・時刻:Date

これだけで、実務のかなりの部分は書けます。
他にもたくさん型はありますが、「まずはこの4つを使いこなす」が最優先です。


整数型:Long を“標準”にしてしまおう

Long型とは何か

Long は「大きめの整数」を扱うための型です。

宣言の例はこうです。

Dim count As Long
count = 10
VB

Long は、かなり広い範囲の整数を扱えます(マイナスも含む)。
「人数」「個数」「回数」「行番号」など、“小数点のいらない数”は、とりあえず Long でOKです。

Integer との違いと、なぜ Long を勧めるか

VBAには Integer という型もあります。

Dim n As Integer
VB

ですが、Integer は扱える範囲が狭く、
行数やIDなどを扱っていると簡単にオーバーフロー(範囲外エラー)を起こします。

一方 Long は、Excelで扱うような数ならまず足りなくなることはありません。

だから実務では、
「整数は全部 Long にしておけばいい」
と覚えてしまって問題ありません。


小数型:Double は“小数を含む数値の箱”

Double型とは何か

Double は「小数を含む数値」を扱う型です。

Dim price As Double
price = 1234.56
VB

金額(税抜・税込の計算)、割合、平均値、統計計算など、
小数点が必要な場面では Double を使います。

計算の例

Sub SampleDouble()

    Dim price As Double
    Dim taxRate As Double
    Dim total As Double

    price = 1000
    taxRate = 0.1

    total = price * (1 + taxRate)

    MsgBox total   ' 1100 が表示される(環境によっては 1100 として見える)

End Sub
VB

ここで、price や total を Long にしてしまうと、
小数が切り捨てられたり、意図しない丸めが起きたりします。

「小数が絡む計算は Double」
このルールを体に入れておくと、金額や割合のバグがかなり減ります。


文字列型:String は“文字の箱”

String型とは何か

String は「文字列」を扱う型です。

Dim name As String
name = "山田太郎"
VB

名前、住所、メッセージ、セルの文字列、ファイルパスなど、
「数字っぽく見えても、計算しないもの」は String で持つのが基本です。

例えば、郵便番号や電話番号は、
「0123-456-789」のように先頭の0が重要だったり、ハイフンが入ったりします。
これを数値型で持つと、0が消えたり、ハイフンが扱えなかったりして困ります。

「計算する数値」→ Long / Double
「見せるための数字(郵便番号など)」→ String

この切り分けができると、データ型の選び方が一気に賢くなります。

文字列の結合の例

Sub SampleString()

    Dim firstName As String
    Dim lastName As String
    Dim fullName As String

    firstName = "太郎"
    lastName = "山田"

    fullName = lastName & " " & firstName

    MsgBox fullName   ' 「山田 太郎」と表示される

End Sub
VB

ここで & を使って文字列をつなげています。
数値型同士なら + で足し算、String 同士なら & で結合、というイメージです。


日付型:Date は“日付と時刻専用の箱”

Date型とは何か

Date は「日付や時刻」を扱う型です。

Dim birthday As Date
birthday = #2024/12/31#
VB

Date 型は、内部的には数値ですが、
「日付としての意味」を持ったまま扱えるのが強みです。

日付計算の例

Sub SampleDate()

    Dim today As Date
    Dim nextWeek As Date

    today = Date          ' 今日の日付
    nextWeek = today + 7  ' 7日後

    MsgBox "今日: " & today & vbCrLf & "1週間後: " & nextWeek

End Sub
VB

Date 型を使うと、
「日付に7を足すと7日後」
「日付同士を引くと日数差」
のような直感的な計算ができます。

もしこれを String で持ってしまうと、
「文字列としての ‘2024/12/31’」になってしまい、
日付としての計算がやりにくくなります。

「日付は必ず Date 型」
これも強いルールとして覚えてしまってOKです。


真偽値型:Boolean は“はい/いいえのフラグ”

Boolean型とは何か

Boolean は、「True(真)」か「False(偽)」のどちらかだけを持つ型です。

Dim isActive As Boolean
isActive = True
VB

「この処理を実行するかどうか」
「このユーザーは有効かどうか」
「条件を満たしているかどうか」

といった“フラグ”を表現するのにぴったりです。

If文との組み合わせ例

Sub SampleBoolean()

    Dim isMember As Boolean
    isMember = True

    If isMember = True Then
        MsgBox "会員価格を適用します"
    Else
        MsgBox "通常価格です"
    End If

End Sub
VB

慣れてくると、

If isMember Then
VB

のように書くことも多いです(isMember が True のときに実行)。

Boolean をちゃんと使うと、
「0/1 でフラグを表す」よりも、コードの意味が読みやすくなります。


Variant型:なんでも入る“何でも屋の箱”の扱い方

Variant型とは何か

Variant は、「どんな型の値でも入る箱」です。

Dim v As Variant
v = 10
v = "文字列"
v = #2024/12/31#
VB

このように、数値も文字列も日付も、何でも入ります。
一見とても便利ですが、実はかなり危険でもあります。

なぜ Variant を乱用すると危ないのか

Variant は型が決まっていないので、

計算のときに暗黙の型変換が起きる
意図しない文字列→数値変換などでバグる
型のミスマッチに気づきにくい

といった問題が起きやすくなります。

超初心者のうちは、
「とりあえず Variant にしておけば動く」
という誘惑に負けがちですが、
それをやると後で必ず苦しみます。

基本ルールとしては、

「型が分からないときに一時的に使う」
「配列やセル範囲を丸ごと受けるときに使う」

など、用途を絞って使うのが安全です。


データ型を意識したコードと、意識していないコードの差

型を意識していない例

Sub BadSample()

    Dim a, b, c

    a = "10"
    b = 5
    c = a + b

    MsgBox c

End Sub
VB

ここでは、a / b / c はすべて Variant になります。
“10”(文字列)と 5(数値)を足しているので、
VBA が勝手に型変換をしてくれますが、
状況によっては意図しない結果になることもあります。

型をきちんと決めた例

Sub GoodSample()

    Dim a As Long
    Dim b As Long
    Dim c As Long

    a = 10
    b = 5
    c = a + b

    MsgBox c

End Sub
VB

こちらは、すべて Long で統一されています。
「整数の足し算」という意図が、コードからもはっきり読み取れます。

さらに、もし a に文字列を代入しようとしたら、
コンパイルエラーや実行時エラーで気づけます。

データ型をきちんと決めるというのは、
「自分の意図をコンピュータに正確に伝える」
ということでもあります。


超初心者向け「データ型」の実践ルール

最後に、今の段階で持っておいてほしい“シンプルな型選びルール”をまとめます。

整数は Long
小数を含む数値は Double
文字列は String
日付・時刻は Date
はい/いいえのフラグは Boolean
Variant は「どうしても型を決められないときだけ」にする

このルールだけでも、コードの安定感がかなり変わります。

タイトルとURLをコピーしました