変数とは
変数とは、プログラムの実行中に使用する値を一時的に格納するための「入れ物」です。実際には、パソコンのメモリに領域を確保して計算結果や値を格納したり、参照したりします。
VBAで操作内容を記述するとき、さまざまな場面で数値や文字列などの値を使用します。このとき、直接その値を指定することもできますが変数を利用するとその値が何に使用される値なのかが分かり易くなるとともに、変化する値を変数名で記述することができるので、汎用性の高いプロシージャーになります。
変数を宣言する
変数は、プロシージャー内でどのような変数が使用されているかわからなくならないように最初に変数を宣言してから使用します。
変数を宣言するにはDim【ディム】ステートメントを使用します。そのあとに、As【アズ】キーワードを使用して変数のデータ型をを宣言します。
変数のデータ型は、変数に格納する値の種類をデータ型で示し、1つの変数に別の種類の値が格納されることを防ぎます。
変数宣言の書式と設定値の説明
Dim 変数名 As データ型
【複数の変数を宣言するときはカンマで区切って宣言できます。】
Dim 変数名 As データ型, 変数名 As データ型
- 変数名
変数名は、次のような「名前付け規則」にしたがって変数名をつける必要があります。
何に使用する変数なのかがわかるような「変数名」を付けるようにしましょう。
1.変数名には英数字、漢字、ひらがな、カタカナ、_アンダースコアが使用できます。ただし、先頭に数値は使用できません。
2.変数名の大文字と小文字は区別されません。
3.変数名にスペースや記号は使用できません。
4.VBAで定義されている「予約語」と同じ名前は使えません。 - データ型
データ型は、種類によって使用するメモリー領域の大きさや、利用できる値の範囲に違いがあります。
どのようなデータを変数に格納するかによってデータ型を使い分けてください。
データ型 | 使用メモリー | 格納できる値の範囲 |
---|---|---|
Byte 【バイト型】 | 1バイト | 0~255までの 正の整数値 |
Boolean 【ブール型】 | 2バイト | TrueまたはFalse |
Integer 【整数型】 | 2バイト | -32,768~32.767 の整数値 |
Long 【長整数型】 | 4バイト | 整数型では保存できない 大きな桁数の整数値 -2,147,483,648~2,147,483,647 の整数値 |
Single 【単精度浮動 小数点数型】 | 4バイト | 小数点を含む数値を保存 -3.402823E38~-1.401298E-45 (負の値) 1.401298E-45~3.402823E38 (正の値) |
Double 【倍精度浮動 小数点数型】 | 8バイト | Singleよりも大きな桁の 小数点を含む数値 -1.79769313486231E308~ -4.94065645841247E-324 (負の値) 4.94065645841247E-324~ 1.79769313486231E308 (正の値) |
Currency 【通貨型】 | 8バイト | 15桁の整数部分と4桁の 小数部分を含む数値 -922,337,203,685,477.5808~ 922,337,203,685,477.5807 |
Date 【日付型】 | 8バイト | 日付と時刻 西暦100年1月1日~ 西暦9999年12月31日 |
Object 【オブジェクト型】 | 4バイト | オブジェクトを参照 |
String 【文字列型】 | 10バイト⁺ 文字列の長さ | 文字列を保存 0~2GB |
Variant 【バリアント型】 | 数値:16バイト 文字:22バイト +文字列の長さ | すべての値 |
変数の宣言を強制する
VBAでは、プロシージャー内でのVBAのキーワード以外の用語は、すべて、ユーザーが定義した変数と判断して処理をすすめてしまいます。 変数名を間違えて記述してもエラーにならず
思うような結果にならない場合があります。
「変数の宣言」をすることにより、間違った変数名を記述した場合などにエラーが発生して
間違いを修正できるようにします。
その「変数の宣言」を強制させるには、モージュールの先頭部分の宣言セクションに
Option Explicit【オプションエクスプレセクト】ステートメントを記述します。Explicit【エクスプレセクト】は「明示的に」の意味があります。
Option Explicitステートメントの設定方法
1.開発タブをクリックします。
2.VisualBasicをクリックします。
3.ツールをクリックします。
4.オプションを選択します。
5.変数の宣言を強制するのチェックボックスにチェックを入れます。
6.OKボタンを押します。
7.挿入タブをクリックします。
8.標準モジュールを選択します。
9. Option Explicitステートメントが自動的に挿入されました
以降はチェックを外さない限り自動で挿入されます。
変数に値を格納する書式
変数名 = 格納する値
オブジェクト型の変数について
オブジェクト型に変数には、ワークシートやセルなどのオブジェクトを格納しますが、「総称オブジェクト型」と「固有オブジェクト型」の2つの宣言方法があります。
「固有オブジェクト型」で指定すると、コードを記述するときに、そのオブジェクトに対応した自動メンバーが表示されます。また、処理速度も速くなりますので、格納するオブジェクトの種類がわかっている場合は「固有オブジェクト型」で宣言します。
オブジェクト型の変数に値を格納する場合は必ずSet【セット】ステートメントを使用します。
「総称オブジェクト型」として宣言する書式
【すべての種類のオブジェクトを格納できます。】
Dim 変数名 As Object
「固有オブジェクト型」として宣言する書式
【ワークシートを格納する場合】
Dim 変数名 As Worksheet
【セルを格納する場合】
Dim 変数名 As Range
オブジェクト型の変数に値を格納する書式
Set 変数名 = 格納するオブジェクト
変数の適用範囲と有効期限(スコープ)
変数は、宣言する場所によって使用できる範囲と有効期間が異なります。
この変数の適用範囲と有効期間のことを変数のスコープといいます。宣言セクションに宣言する「モジュールレベル変数」と、プロシージャー内で宣言する「プロシージャーレベル変数」があります。
宣言する場所 | 適用範囲 | 有効期間 |
---|---|---|
宣言セクション | モジュール内のすべての プロシージャーで使用できる | モジュールを閉じるまで 値が保持される |
プロシージャー内 | 変数を宣言したプロシージャー内 でのみ使用できる | プロシージャー実行中のみ 値が保存される |
「プロシージャーレベル変数」の値を保持する方法
プロシージャーレベル変数は、プロシージャー終了時に、変数の値が初期化されます。プロシージャーが終了しても変数の値を保持したい場合は、Dim【ディム】ステートメントの代わりに
Static【スタティック】ステートメントを使用して変数を宣言します。Static【スタティック】ステートメントを使用して宣言した変数の値は、宣言したプロシージャーを含むモジュールが終了するまで保持されます。
複数のモジュールで同じ変数を使用する方法
複数のモジュールで同じ変数を使用するには、「宣言セクション」でDim【ディム】ステートメントの代わりにPublic【パブリック】ステートメントを使用して変数を宣言します。
宣言したモジュール内で使用する「モジュールレベル変数」は、「宣言セクション」でDim【ディム】ステートメントを使用して
宣言できますが、Private【プライベイト】ステートメントも使用できます。
以上で、Excel VBA 変数についての解説を終了します。
ありがとうございました。