変数を宣言してエラーを防ぐ
VBAで変数を利用する際、特に何もしなくても使うことができます。
しかし、使うことはできますが、意図しないエラーや不具合を防ぐために、あえて変数の宣言を行うことをお勧めします。
変数の宣言を行うことで、「想定外の値が入る」「入力ミス」といった間違いに気づきやすくなり、コードの誤りを事前に防ぐことができます。
今回は、変数の宣言方法について、次の2つの方法を解説します。
- Dimだけで宣言する方法
- Option ExplicitとDimを併用する方法
1. Dimだけで宣言する方法
変数の宣言の基本は、Dim
ステートメントを使うことです。書き方は次の通りです。
Dim 変数名 As 型
こうすることで、「この変数を使います!」と宣言をすることができます。
そこにプラスして、型は、変数にどのような値を入れるかを指定します。
型を入れるメリットは、その変数に入る内容を制限することができ、例えば、その変数には「数字しか入らない」とか、「文字だけ入れていい」とかそういう縛りを設けることができます。
次に主な型をいくつか紹介します。
- 整数型(Integer, Long)
Integer
:-32,768〜32,767の数値を入れることができます。Long
:-2,147,483,648〜2,147,483,647の数値を入れることができます(大きい数値用)。
- 文字列型(String)
- 文字列(テキストデータ)を入れることができます。
使用例
Dim i As Integer ' 整数型の変数iを宣言
Dim sheet_name As String ' 文字列型の変数sheet_nameを宣言
上記のように宣言することで、それぞれの変数には指定した型以外の値を代入できなくなります。
例:エラーの発生
Dim i As Integer
i = 40000 ' Integerの範囲を超えるためエラー
メリット:
例のように、変数に型を指定することで、想定外のデータが入ることを防ぎます。
2. Option ExplicitとDimを併用する方法
Option Explicit を使用することで、変数の利用の制限をすることができます。
Option Explicitとは?
Option Explicit
を入力すると、すべての変数を宣言しなければエラーになります。
これにより、変数名の入力ミスや宣言していない変数を使用した場合に、すぐに問題に気づくことができます。
Option Explicitの使い方
Option Explicit
は、VBEのコードモジュール(コードを書くところ)の一番上に記載します。
Option Explicit
Sub Sample()
Dim sheet_name As String ' 変数を宣言
shet_name = ActiveSheet.Name ' 入力ミスした変数名(エラーになる)
End Sub
上記の例では、変数名を「sheet_name
」とする予定が「shet_name
」になっています(eが1文字抜けている)。
この場合、shet_name
は宣言されていないため、エラーが発生することで、入力時には「sheet」と打っているつもりでも、機械的に確認をしてくれ、変数名が間違っていることを教えてくれるわけです。
Option Explicitを自動的に適用する方法
この「Option Explicit」ですが、上記でご説明した通り、直接入力することもできますが、初期設定として自動的に適用させる方法があります。
- VBEを開きます。
- メニューから 「ツール」→「オプション」を選択。
- 「全般」タブで「変数の宣言を強制する」にチェックを入れます。
これで新しいコードモジュールには自動的に「Option Explicit」
が挿入されるようになります。
まとめ
- Dimステートメント を使って、変数に入る値の型を制限することでエラーを防げます。
- Option Explicit を使用することで、宣言していない変数の使用を防ぎ、入力ミスによるエラーを回避できます。
- 自動的にOption Explicitを有効化する設定 を行うと、最初から制限されるため、コードを書く際のミスを未然に防げます。
おすすめポイント
変数を利用する際には、必ず宣言を行うことを心がけましょう。これにより、想定外の動作やバグを減らし、よりミスの少ないマクロを作成できます。
コメント