VBAのDim宣言の使い方|型指定とOption Explicitで未宣言変数を防ぐ方法

VBAでは変数を宣言しなくても使えますが、宣言することで「想定外の値が入る」「変数名のタイプミス」といった問題を事前に防ぐことができます。

この記事では、Dim による変数宣言の基本と、Option Explicit を組み合わせて未宣言変数の使用を禁止する方法を解説します。

Dimで変数を宣言するには?

Dim ステートメントを使うと「この変数を使います」という宣言ができます。型を指定することで、その変数に入れられる値の種類を制限します。

Dim 変数名 As 型

主な型の種類は次のとおりです。

内容
Integer整数(-32,768〜32,767)
Long大きい整数(-2,147,483,648〜2,147,483,647)
String文字列(テキストデータ)
Boolean真偽値(True / False)
Double小数を含む数値
Dim i As Integer       ' 整数型
Dim sheet_name As String  ' 文字列型

型の範囲を超えた値を代入しようとするとエラーになります。例えば Integer 型の変数に40,000を代入するとオーバーフローエラーが発生します。ループカウンターなど大きい数を扱う場合は Long を使いましょう。

Option Explicitで未宣言変数の使用を禁止するには?

Option Explicit をモジュールの先頭に書くと、宣言していない変数を使ったときに自動的にエラーが発生します。変数名のタイプミスを防ぐ強力な仕組みです。

Option Explicit

Sub Sample()
    Dim sheet_name As String
    shet_name = ActiveSheet.Name  ' 「e」が1文字抜けているためエラー
End Sub

shet_name は宣言されていない変数のため、Option Explicit があればエラーになります。宣言なしでは気づかないまま動いてしまうところを、確実に検出できます。

Option Explicitを自動的に有効化するには?

VBEの設定を変更することで、新しいモジュールを作成するたびに自動的に Option Explicit が挿入されるようになります。

① VBEを開く(Alt+F11)
② メニューの「ツール」→「オプション」を選択
③ 「編集」タブの「変数の宣言を強制する」にチェックを入れる

一度設定しておけば毎回手入力する必要がなくなります。

まとめ

  • Dim 変数名 As 型 で変数の型を宣言し、想定外の値の混入を防ぐ
  • 大きい整数には Long、文字列には String を使うのが基本
  • Option Explicit をモジュール先頭に書くと未宣言変数の使用をエラーで検出できる
  • VBEの「変数の宣言を強制する」設定を有効にすると自動的に Option Explicit が挿入される
  • 変数は必ず宣言する習慣をつけることでバグの少ない安定したコードになる

よくある質問

変数の型を指定しないとどうなりますか?

型を省略すると自動的に Variant 型になります。Variant はあらゆる値を受け付けますが、メモリの消費が多く処理が遅くなることがあります。意図した型を明示する方が安全です。

IntegerとLongはどう使い分けますか?

基本的には Long を使っておけば問題ありません。現代のPCでは Integer より Long の方が処理が速い場合もあります。行番号・列番号など大きな値になりうる変数には必ず Long を使いましょう。

Option Explicitは既存のモジュールにも効きますか?

はい。モジュールの先頭に手動で Option Explicit と書けば既存のモジュールにも適用されます。既存コードに未宣言変数がある場合はエラーになるため、宣言を追加して修正してください。

複数の変数を1行でまとめて宣言できますか?

できます。Dim i As Long, j As Long, name As String のようにカンマで区切れます。ただし Dim i, j As Long と書くと iVariantj だけが Long になるため注意が必要です。

宣言した変数の初期値は何ですか?

数値型(IntegerLong など)は 0、文字列型(String)は空文字 ""、ブール型(Boolean)は False、オブジェクト型は Nothing が初期値です。


動画で学びたい方へ

「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。

VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール