【ExcelVBA】変数
変数
変数は値を入れるための箱のような仕組みです。電卓のメモリー機能に近いものです。
電卓で何か計算をするときに、簡単な計算であればメモリー機能を使わずとも計算結果を導くことはできますが、複雑な計算の場合には途中の計算結果をメモ帳に書いておいたり覚えておくことが必要になるかと思います。その途中の計算結果を保存しておくための仕組みがメモリー機能です。
VBAをはじめとする一般的なプログラミングでも同様に複雑な計算を行う場合には一息に最後まで計算することができず、計算の途中を一時的に保存しておきたいことがあります。このような一時保存機能を変数と言います。
変数を使うときの手続きは次の通りです。
1. 変数宣言
2. 値の代入
3. 変数の参照
「1. 変数宣言」とは、変数を使用する前の準備です。変数宣言を行うときの書式は次の通りです。
Dim [変数名] As [変数の型] Private [変数名] As [変数の型] Public [変数名] As [変数の型]
実際のコードは次のようになります。変数名が「x」「y」「z」、変数の型は全て「Integer」になっています。
Dim x As Integer Private y As Integer Public z As Integer
このプログラムを実行すると、「x」「y」「z」という3つの変数が作成され使用する準備が整います。
「2. 値の代入」と「3. 変数の参照」、および変数の型「Integer」に関しては後述します。
変数名の前に付いている「Dim」「Private」「Public」は予約語と呼ばれ、VBAにより予め用途が決められている単語です。どの予約語を使用するかによってその変数の有効範囲(スコープ)が変わります。それぞれ次のような意味があります。
Dim(プロシージャ内)・・・プロシージャ内で変数宣言した場合はそのプロシージャ内でしか使用できない。
Dim(宣言セクション)・・・宣言セクションで使用した場合は、そのモジュール内の全てのプロシージャで使用することができる。
Private・・・宣言セクションで使用し、そのモジュール内の全てのプロシージャで使用することができる。
Public ・・・宣言セクションで使用し、全てのモジュールで使用することができる。
モジュールとはVBAプログラムが記述された1つのファイルのことです。一般的なVBAアプリケーションは複数のモジュールから構成されています。そのモジュールの中にはプロシージャと呼ばれるプログラムのパーツが1つ以上記述されます。
宣言セクションは各モジュールのヘッダー部(ファイルの上部)のことです。(モジュール、プロシージャ、宣言セクションの詳細に関しては後述します。)
つまり、上記の説明を踏まえ有効範囲(スコープ)の順に並び変えると次のようになります。
Dim(プロシージャ内) < Dim(宣言セクション) = Private < Public Dim(宣言セクション)とPrivateの有効範囲(スコープ)は同じですのでどちらを使っていただいても構いませんが、筆者の経験上ではDimを使用することが多いようです。 また、複数の変数をまとめて宣言するときには次のように記述することができます。 [vb] Dim a As Integer, b As String [/vb] Dimを省略し変数[a」と「b」を宣言しています。このようにカンマ区切りにすることで2つ以上の変数をまとめて宣言することができます。