こんにちは。ECF Tech担当
Michiharu.Tです。
Excel VBA入門の第4回です。
今回からはExcelマクロを通して、どのプログラム言語にも共通する基礎的な知識を学んで行きたいと思います。変数、代入、演算などの基本的な概念を知ることで、プログラムをより効率的に記述することができます。
では本日もよろしくお願いいたします。本連載の目次は下記よりご覧頂けます。
変数
変数は値を入れておくためのコンピュータ内の入れ物です。変数を使うことで複雑な処理を実現することができます。変数を使うためには、次の3つのステップが必要です。
変数の使い方
下のマクロを例に、変数の使い方を見ていきましょう。
Sub マクロ1() '変数の宣言 Dim value '変数への値の代入 value = 5 '変数にある値の利用 Range("A1").value = value End Sub
'
で始まる行はコメントと呼ばれる記述です。コメント行はプログラムとはみなされないので、プログラムの説明などを自由に書くことができます。本連載でもプログラムの説明に用いることがあります。(1)変数の宣言
まず最初に行うのは変数の宣言です。変数の宣言(変数宣言)とは、変数を準備することです。プログラムの下記部分になります。
Dim value
文法は下のとおりです。
Dim 変数名 As 型
型については後程説明したいと思います。As 型
の部分は省略可能なので、今回のプログラム例では省略しています。変数名は変数につけられる名前です。どのような値が入っているかが分かりやすい名前を付けるようにしましょう。プログラム例では、value
が変数名になります。
(2)値の代入
変数を作ったら値を入れます。プログラムの下記部分です。
value = 5
変数に値を入れることを代入と言います。値を代入する文法は次のとおりです。
変数名 = 値
(3)値の利用
値が代入できたら、変数を使うことができます。変数名をプログラム中に書くことで使用できます。プログラムの下記部分です。
Range("A1").value = value
A1セルのvalueプロパティに変数value
を代入しています。=
右側のvalue
が変数です。変数value
に入っている値は5
ですので、A1セルに5が設定されます。
変数の性質
次に変数の性質について、いくつか説明をします。
(1)再代入と上書き
変数は何度でも値を代入できます。値を再度代入すると、もとの値が上書きされます。プログラム例を示します。
Sub マクロ2() Dim value '値を代入 value = 4 Range("A1").value = value '値を再度代入 value = 8 Range("A2").value = value End Sub
実行結果は次のようになります。
プログラムの動作を順番に説明します。
value = 4
で、変数valueに4を設定しています。Range("A1").value = value
で、A1セルに変数valueの値を設定しています。変数value
は4
なので、A1は4になります。value = 8
で、変数valueに8を再度設定しています。Range("A2").value = value
で、A2セルに変数valueの値を設定しています。変数value
は8
なので、A2は8になります。
(2)変数の複数宣言
変数は複数宣言できます。プログラム例を示します。
Sub マクロ3() '変数xとyを宣言 Dim x Dim y 'それぞれの変数に値を代入 x = 6 y = 10 'それぞれの変数の値をセルに設定 Range("A1").value = x Range("A2").value = y End Sub
実行結果は次のようになります。
変数xとyを宣言し、それぞれに値を代入、その後A1とA2セルにxとyの値を代入しています。
(3)変数宣言の強制
Excel VBAにおいて、変数宣言は必須ではありません。例えば次のプログラムは問題なく動作します。
Sub マクロ4() '変数への値の代入 value = 30 '変数にある値の利用 Range("A1").value = value End Sub
マクロ1から変数宣言部分を除いたものです。このように変数宣言は必ずしも必要なものではないのですが、変数宣言無しに長いプログラムを記述すると、どこでどんな名前の変数を宣言しているかがわからなくなるためおススメの方法ではありません。
そのため、変数宣言を強制する設定がよく用いられます。次の手順で行うことができます。
VBEの画面で、ツール > オプション をクリックします。
編集タブの「変数の宣言を強制する」にチェックを入れます。
これで設定は完了です。以降、新規に標準モジュールを作成すると、下図のように標準モジュールの先頭にOption Explicit
の記述が追加されます。
マクロはその記述の下に今までどおり書くことができます。下図のようにマクロ4と同じプログラムを書いて実行すると、変数が宣言されていないことを示すエラーとなります。
本連載でも、以降はこの設定を入れた状態でマクロを記述する例を紹介します。
値と型
変数には型があります。型は「値の種類」のことです。代表的なものをご紹介します。
型名 | 概要 | 説明 |
---|---|---|
Integer | 整数型 | -32768 ~ 32767の間の整数を入れられる型です。 |
Long | 長整数型 | -2,147,483,648 ~ 2,147,483,647の間の整数を入れられる型です。 |
String | 文字列型 | 文字列(文字の並び)を入れられる型です。 |
変数宣言の際に下のように型名の部分を記述することで、その変数がどんな値を入れられる型なのかを確定できます。
Dim x as Integer
型がプログラムにどのような影響を与えるのか、いくつかのプログラムで試してみましょう。なお、代入のテストだけなのでExcelのシートには何も変化がありません。
次のプログラムでは、変数xをInteger型として宣言しています。Integerは整数を代入できます。代入している値も範囲内に収まっていますので、正しく実行できます。
Sub マクロ5() Dim x As Integer x = 30000 End Sub
次のプログラムでも変数xをInteger型として宣言しています。ただし、代入する値がInteger型に収まる範囲を超えているため、実行すると「オーバーフローしました。」のエラーが表示されます。
Sub マクロ6() Dim x As Integer x = 1234560 End Sub
次のプログラムでも変数xをInteger型として宣言しています。Integerは整数を代入できる型ですが、プログラムでは"りんご"
と文字列を代入しているため、実行すると「型が一致しません。」のエラーが表示されます。
Sub マクロ7() Dim x As Integer x = "りんご" End Sub
バリアント型
バリアント(Variant)型は文字列、日付、時刻、数値など様々な値が代入できる特殊な型です。次のように型を省略して変数を宣言した場合、その変数の型はバリアント型として扱われます。様々な型が代入できる様子をプログラムで見てみましょう。
Sub マクロ8() Dim hensu hensu = 5 '整数を代入 hensu = "りんご" '文字列を代入 hensu = Date '日付情報を代入 Range("A1").Value = hensu End Sub
プログラムの実行結果は次のようになります。Date
は日付の情報を代入できる記述です。日付情報を変数hensu
に代入した後、A1にhensu
の値を設定することで、日付情報が表示できています。
演算
演算はコンピュータが行うことのできる計算の総称です。+、ー、×、÷の四則計算の他にも様々な処理を行なうことができます。
演算は、演算子とオペランドを組み合わせて式を作ることによって行います。下は足し算を行なう式の例です。
- 演算子は計算の種類を表す記号です。
- オペランド(operand) は計算に用いられる値です。
- 演算子によって使用するオペランドの数が異なります。
用語の紹介で少し難しい印象になりましたが、実際に使ってみると直感的でそれほど難しくはありません。今回は算術演算子について、プログラム例を見ながらご紹介します。
Sub マクロ9() Range("A1").Value = 5 + 3 'たし算 Range("A2").Value = 5 - 3 'ひき算 Range("A3").Value = 5 * 3 'かけ算 Range("A4").Value = 5 / 3 'わり算 Range("A5").Value = 5 \ 3 'わり算の余り End Sub
上記のプログラムの実行結果は次のようになります。A1~A5セルにそれぞれたし算、ひき算、かけ算、わり算、わり算の余りが設定されます。
Excel VBAの算術演算子には次のようなものがあります。
記号 | 意味 |
---|---|
+ | たし算 |
- | ひき算 |
* | かけ算 |
/ | わり算(商) |
¥ | わり算の余り |
算術演算子は、いわゆる算数で出てくる計算ができる演算子です。他にも様々な演算子がありますが、必要に応じてご紹介していければと思います。
というわけで本日はここまでとさせて頂きたいと思います。最後までお読み頂き、ありがとうございました。次回も様々なプログラムをご紹介したいと思います。ひきつづき、よろしくお願いいたします。