変数宣言すときは「型」も必ず定義する

変数宣言すときは「型」も必ず定義する

VBAって不思議で、変数をちゃんと宣言しなくても、なんとなく動いてしまうことがあります。
でも、初心者がVBAでつまずく原因って、実はこの「なんとなく動く」が生む事故だったりします。

この記事では、型(Long / String など)を定義するメリットと、初心者がまずやるべき最小ルールを、VBAの例でわかりやすくまとめます。

そもそも「型」って何?

型は、かんたんに言うと「その変数に入れる値の種類」です。

型を決めておくと、「この変数は何を入れるものか」がハッキリします。

型を定義しないと何が起きる?

VBAは、変数の宣言や型の指定を省略しても動くことがあります。
そのとき多くの場合、VBAはその変数をVariant(バリアント)という万能っぽい型として扱います。

Variantは便利です。
でも、初心者が困る原因にもなります。

あるある①:タイポ(打ち間違い)がバグになっても気づかない

型以前に「宣言しない」ことの怖さがこれです。


Sub Sample()
total = 100
toatl = total + 1' ←typo(スペルミス)
MsgBox total
End Sub

これ、エラーにならずに実行できてしまうことがあります。
そして結果は 100 のまま。

なぜかというと、VBAが toatl を「新しい変数」として勝手に作ってしまうからです。
つまりミスがミスとして表に出ない。これが一番怖いところです。

あるある②:文字と数値が混ざって挙動がブレる

Variantは中身に合わせてVBAが自動変換してくれることがあります。


Sub Sample()
Dim v
v = "10"
MsgBox v + 1
End Sub

これ、うまくいけば 11 と出ます。
でも「数字っぽい文字列」だからたまたま計算できただけです。

次のように少しでも混ざると急に落ちます。

Sub Sample()
Dim v
v = "10a"
MsgBox v + 1' 型不一致になりやすい
End Sub

初心者が「昨日は動いたのに今日は動かない…」となりやすいのがこのパターンです。

あるある③:Excelのセルの値は、想像以上に“何でもあり”

Excelのセルには、いろんなものが入ります。

それをそのまま受け取ると、Variantになりやすいです。
だからこそ、入口ではVariantを使うのはアリです。
ただし、そこから先の「計算」「比較」「処理の中心」は、型をはっきりさせた方が事故が減ります。

型を定義すると、何が良いの?

初心者にとって一番大きいメリットはこの3つです。

1) バグが早く見つかる

型を決めておくと、変な値を入れたときにエラーになったり、違和感に気づけます。

2) 自分のコードが読みやすくなる

「この変数は何?」が減ります。

Dim rowCount As Long
Dim userName As String
Dim totalPrice As Currency

変数名+型で、意図が伝わります。

Excelのオブジェクトが扱いやすい(補完が効く)

特にこれ。

Dim ws As Worksheet
Dim rng As Range

とすると、VBAエディタで候補(メソッドやプロパティ)が出やすくなり、ミスが減ります。

まずやるべき最小ルール:Option Explicit

VBAで「宣言しないと動く」を止めるには、これが最優先です。

Option Explicit

これをモジュールの先頭に書くと、宣言していない変数を使った瞬間にエラーになります。
さっきの toatl みたいなタイポがすぐ見つかります。

さらにおすすめは、VBAエディタの設定で自動化することです。

  1. VBAエディタ(VBE)を開く
  2. ツール → オプション
  3. 変数の宣言を強制 にチェック

これで新しく作るモジュールに Option Explicit が自動で入ります。

初心者向け:迷ったらこの型セットでOK

「全部覚えるの無理…」となるので、最初はこれだけで十分です。

実例:入口はVariant、中心は型で固める

セルの値を使って合計を出す例です。


Option Explicit
Sub SumExample()
Dim v As Variant
v = Range("A1").Value' 入口はVariantで受ける
Dim x As Double
If IsNumeric(v) Then
x = CDbl(v)' 数値に変換してから計算する
MsgBox x * 1.1
Else
MsgBox "数値が入っていません"
End If
End Sub

ポイントはこれです。

これだけで「急に落ちる」「結果がブレる」が激減します。

よくある勘違い:Intは“型変換”ではない

初心者が混乱しやすいので一言だけ。

「文字列を数値にしたい」なら、基本は CDblCLng です。

まとめ:VBAは動くからこそ、型を定義すると強くなる

VBAは、書かなくても動いてしまうことがあります。
でも、動くコードは「正しく動くコード」とは限りません。

初心者がまずやるべきことはシンプルです。

  1. Option Explicit を入れる(宣言を必須にする)
  2. 変数にはできるだけを付ける
  3. セル値などの入口はVariantで受けて、処理前に型に落とす

これだけで、VBAのコードは一気に壊れにくくなります。

Author Profile

コウノ(
職歴年のIT技術者です。エクセル・Web制作が得意。

プロフィールの詳細

お困りごとはまずはご相談ください。パソコン・スマホ初期設定 / ツール導入・開発受付中

Back to Top