VBAの変数の型一覧まとめ!Integer/Long/Stringなどよく使う型を徹底解説
生徒
「変数を宣言するときに使う『As Integer』とか『As String』って何のことですか?」
先生
「それは『データ型』といって、箱(変数)に入れる中身の種類を指定しているんですよ。」
生徒
「種類を決めないといけないんですか?全部同じ箱じゃダメなんですか?」
先生
「実は種類を決めることで、パソコンのメモリを節約したり、計算ミスを防いだりできるんです。基本的な型を一緒に覚えていきましょう!」
1. 変数の「型」とは?データの種類を決めるルール
Excel VBA(エクセル・ブイビーエー)でプログラミングをする際、避けて通れないのが「変数の型(かた)」です。変数はデータを一時的に入れておく「箱」のようなものだと説明しましたが、その箱には「何を入れるための箱か」というラベルを貼る必要があります。
例えば、冷蔵庫の中に「飲み物を入れる場所」「野菜を入れる場所」が決まっているように、プログラムでも「数字を入れるための箱」「文字を入れるための箱」を使い分けます。この分類のことをデータ型と呼びます。
適切な型を選ぶことで、Excel(エクセル)がスムーズに動作し、予期せぬエラー(バグ)を減らすことができるようになります。パソコンを初めて触る方でも、まずは「数字用」と「文字用」があるんだな、くらいの気持ちで読み進めてみてください。
2. 整数を扱う型:Integer(インテジャー)とLong(ロング)
一番よく使うのが、小数点のない「整数」を入れる型です。VBAには主に2種類の整数の型があります。
- Integer(インテジャー): 小さな整数用。約 -3万 〜 3万 までの数字が入ります。
- Long(ロング): 大きな整数用。約 -21億 〜 21億 までの数字が入ります。
「どっちを使えばいいの?」と迷うかもしれませんが、最近のパソコンは性能が良いので、基本的にはすべて Long を使うのがおすすめです。エクセルの行数は最大で100万行以上あるため、行番号を数えるときに Integer を使うと、数字が溢れてエラー(オーバーフロー)になってしまうからです。
Sub IntegerAndLong()
' 小さな数字ならIntegerでも大丈夫
Dim appleCount As Integer
appleCount = 10
' 大きな数字や行番号は必ずLongを使おう
Dim rowCount As Long
rowCount = 1000000
MsgBox "リンゴは" & appleCount & "個、行数は" & rowCount & "です。"
End Sub
3. 文字を扱う型:String(ストリング)
名前、住所、商品の説明など、「文字」を扱いたいときに使うのが String(ストリング) 型です。プログラミング用語で文字の集まりを「文字列(もじれつ)」と呼ぶため、この名前が付いています。
String型を使うときのルールは、中身を " "(ダブルクォーテーション) で囲むことです。これを忘れると、VBAは「文字」ではなく「別の命令」だと勘違いしてエラーを出してしまいます。
Sub StringSample()
' 文字を入れる箱を準備
Dim userName As String
' 文字を入れる(必ずダブルクォーテーションで囲む)
userName = "田中太郎"
MsgBox "こんにちは、" & userName & "さん!"
End Sub
この &(アンパサンド)は、文字と文字をくっつける「のり」のような役割をする記号です。非常に便利なので一緒に覚えておきましょう。
4. 小数点を扱う型:Double(ダブル)
割り算の結果や、消費税の計算(0.1を掛けるなど)をしたいときは、整数用の型では対応できません。そこで登場するのが Double(ダブル) 型です。
Doubleは「倍精度浮動小数点数(ばいせいどふどうしょうすうてんすう)」という難しい名前がありますが、要するに「小数点がある細かい数字を扱える箱」だと思ってください。数学の計算や平均値を出すときによく使われます。
Sub DoubleSample()
' 小数点を扱う箱を準備
Dim taxRate As Double
Dim price As Long
price = 1000
taxRate = 0.1 ' 10%
' 小数点を含んだ計算ができる
MsgBox "消費税は " & price * taxRate & " 円です。"
End Sub
5. 日付と時間を扱う型:Date(デイト)
「今日の日付」や「締め切り時間」を管理するための専用の箱が Date(デイト) 型です。単なる文字として扱うよりも、Date型として扱う方が「1日後の日付を出す」といった計算がしやすくなります。
Date型に値を直接入れるときは、文字の " " ではなく # #(シャープ) で囲むという少し珍しいルールがありますが、基本的にはエクセルのセルの値をそのまま入れることが多いです。
Sub DateSample()
' 日付を入れる箱を準備
Dim todayDate As Date
' 今日の日付を取得
todayDate = Date
' 1週間後の日付を計算して表示
MsgBox "1週間後は " & todayDate + 7 & " です。"
End Sub
6. はい・いいえを判断する型:Boolean(ブーリアン)
「合格か不合格か」「データがあるかないか」といった、二つの状態だけを管理したいときに使うのが Boolean(ブーリアン) 型です。
この箱には True(トゥルー:真・はい) または False(フォルス:偽・いいえ) のどちらか一方しか入りません。条件分岐(If文)と一緒に使うことで、非常に強力な武器になります。
Sub BooleanSample()
Dim isFinished As Boolean
' 作業が終わったことにする
isFinished = True
If isFinished = True Then
MsgBox "すべての作業が完了しました!"
End If
End Sub
7. 何でも入る魔法の型:Variant(バリアント)
「中身に何が入るか分からない!」という時に使える、究極に便利な型が Variant(バリアント) 型です。この型は、数字でも文字でも日付でも、状況に合わせて勝手に形を変えて何でも受け入れてくれます。
「じゃあ全部これにすればいいじゃない!」と思うかもしれませんが、使いすぎには注意が必要です。何でも入る代わりに、パソコンのメモリをたくさん使って動きが少し遅くなったり、間違ったデータが入ってもエラーにならないためミスを見つけにくくなったりします。基本は専用の型を使い、どうしても必要な時だけ Variant を使うのがプロの書き方です。
8. 結局、初心者はどの型を覚えればいいの?
たくさんの型を紹介しましたが、最初からすべてを完璧に使いこなす必要はありません。まずは以下の4つだけを確実に覚えましょう!これだけで、エクセル自動化の9割以上はカバーできます。
| データ型 | 使いどころ |
|---|---|
| Long | 整数(個数、行番号、金額など) |
| String | 文字列(名前、住所、メッセージなど) |
| Double | 小数点(平均、税率、比率など) |
| Variant | 何でも(セルの値をまとめて入れる時など) |
最初は Dim i As Long や Dim myText As String のように、型を指定して書く練習をしてみてください。型を意識して書くようになると、VBAの構造がより深く理解できるようになり、脱・初心者への道が開けますよ!