こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
毎日事務処理に追われて、「もっと楽になりたい」と思ってプログラミングを始めたものの、画面に出る真っ赤なエラーメッセージに心が折れそうになっていませんか?
この記事で解決できる悩み
- VBAで「型が一致しません」というエラーが出てしまい、怖くてコードが書けなくなる悩み。
- 「とりあえず全部Variantでいいじゃない?」と思ってしまうことによる、将来的なトラブル(処理落ちや予期せぬバグ)。
- どのデータ型を選べばいいのかという迷い。
今日は、VBAを使う上で避けては通れない「データ型」について、実務で本当によく使う4つ(Long, String, Date, Variant)に絞って解説します。
データ型は「整理整頓用の箱」
データ型とは、変数を宣言するときに決める「箱の種類」のことです。
引っ越し作業を想像してみてください。本を入れるなら丈夫な段ボール、布団なら圧縮袋、と使い分けますよね? プログラミングも同じです。
1. Long(長整数型):数字を入れるならこれ一択!
「整数を入れるときはIntegerじゃないの?」と思った方、よく勉強されていますね。でも、今はLongを使います。
- 特徴: -2,147,483,648 から 2,147,483,647 までの整数を扱えます 。
- なぜIntegerじゃダメ?: Integerは32,767までしか入りません。Integerでは足りない場合、エラー(オーバーフロー)になります。
- 使いどころ: 行数のカウント、個数、金額など。
2. String(文字列型):文字なら何でもお任せ
- 特徴: 名前、住所、商品コードなど「文字」として扱いたいデータを入れます。
- 注意点: 数字であっても “090-1234-5678” のように電話番号を扱う場合は、計算しないのでString型に入れます。
3. Date(日付型):日付計算の強い味方
- 特徴: 日付や時刻を扱います。
- メリット: 「今日から3日後」のような計算が簡単にできます。String型で日付を管理すると、計算するときに面倒な変換が必要になります。
4. Variant(バリアント型):最強にして最凶の万能箱
- 特徴: 数字、文字、日付、なんでも入ります。型指定を省略(Dim x)すると自動的にこれになります。
- なぜダメなの?: なんでも入る分、メモリ(PCの作業机)を多く使います。また、数字だと思って計算したら中身が文字でエラー…なんてことも。
- 使いどころ: どうしても何が入るかわからない時や、配列を一気に取り込む時など、意図を持って使います。
コピペで動く!実践コード
実際にこれらを使って、売上リストからメッセージを作るマクロを書いてみました。
VBE(コードを書く画面)に貼り付けて動かしてみてください。
Sub CreateSalesMessage()
' 変数の宣言(=箱の用意)
Dim lastRow As Long ' 行数は3万を超える可能性があるのでLong
Dim staffName As String ' 名前は文字なのでString
Dim salesDate As Date ' 日付はDate
Dim rawData As Variant ' 何が入るか不明な一時データはVariant
' ここではテスト用に直接値を入れます
lastRow = 100000 ' Integerだと入らない数値でもLongならOK!
staffName = “佐藤"
salesDate = Date ' 今日の日付
rawData = Range("A1").Value ' セルの値は型が不明確なのでVariantで受けることも
' メッセージを表示
' & で文字をつなげます
MsgBox "担当:" & staffName & vbCrLf & _
"日付:" & Format(salesDate, "yyyy年mm月dd日") & vbCrLf & _
"処理行数:" & lastRow & "行", vbInformation, "処理完了"
End Sub
試しに、Dim lastRow As Long をDim lastRow As Integer に変えて実行してみてください。オーバーフローします。

まとめ
そこまで複雑な処理でない場合、「全部Variant」で書いても動くには動きます。
でもやはり、データ型を理解していないと、複雑な処理を実装した実務レベルのものを作るのは難しいです。
LongやStringを意識して使うことは、「私はこのデータをこう扱いたい!」というPCへの意思表示になります。
エラーが出てもパズルを解く感覚で楽しんでいきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。


コメント