[Excel で VBA] 変数の取り扱いと四則演算

今回はどんなプログラミングにおいても欠かせない「変数」について学ぶ。

本ページ前半で変数の概念と使い方について解説する。
本ページ後半では、四則演算を行う演算子について解説する。

変数の宣言と利用

まず変数とは何かを解説する。まず、以下の式を考える。

x = 5

数学では上の式は「x は 5 に等しい」という意味を表す。
それにやや似ているのだが、プログラミングでは上の式を「変数 x に 5 を代入する」の意味で用いる。
この式の後では x は 5 という数字が格納された入れ物として取り扱うことができる。

このように、数字のようなデータを格納するための入れ物がプログラミングにおける変数である。

VBA で変数 x を使うには以下のような宣言が必要である。

Dim x As Integer

この宣言により、下図のように整数 (Integer) を格納できる箱が用意され、その名前が x となる。



なお、複数の変数を宣言することもできる。

Dim x As Integer
Dim y As Integer
Dim z As Integer

上記の3行からなる宣言を書けば、x、y、z という3つの異なる箱が用意されるというイメージである。
また、この宣言は以下のようにまとめて書くことも出来る。

Dim x As Integer, y As Integer, z As Integer

ここまでは数学のように1文字の変数のみを使ったが、複数の文字からなる名前を付けても良い。
例えば、年齢を格納するために以下のように変数 age を宣言する、などである。

Dim age As Integer

Visual Basic における変数名には以下の制約がある。

変数への値の代入

冒頭でも少し触れたが、宣言した変数に数値を代入するには、イコール「=」という記号を用いれば良い

Dim x As Integer
	x = 5

この2行により実現されることのイメージが下図である。



もちろん、既に値が格納されている変数に別の値を格納しても良い。

Dim x As Integer
	x = 5
	x = 10

実現されることのイメージが下図である。





変数の型

ここまで整数を格納できる変数をを紹介し、Integer で宣言できることを確認した。
実は変数に格納できる値は、変数を宣言するときに指定する型 (type)で決まる。
Integer 型で宣言した変数には整数のみを格納できる、ということである。

Integer 型以外では、小数点以下を含む数を格納できる Double 型を本講義では多用する (下図)。



変数の型には他に例えば以下のようなものがある。太字のものを本講義で使用する可能性がある。

なお、Integer は整数型であるが、取り扱える数の範囲が -32,768~32,767 とやや狭く、大きい数を使いたい場合に不便なことが多い。
そのような場合は、より大きな整数を取り扱える Long 型を用いることもある。

範囲
Byte 0~255の整数
Integer -32,768~32,767の整数
Long -2,147,483,648~2,147,483,647の整数
Single 1.4×10-45~1.8×1038 (負の数も含まれる)
Double 4.9×10-324~1.8×10308 (負の数も含まれる)
String 文字列 ("こんにちは" など)
Boolean True または False



MsgBox による変数の表示

このように変数を宣言して利用できるのであるが、慣れないうちは 変数にどのような値が格納されているか頻繁に確認したくなるであろう。

そのような時は、前回同様に MsgBox 関数で変数 x の値を確認すると良い。使用例をいくつか示す。

まず、最初の例は MsgBox の後ろにそのまま変数名を記す方法である。VBA として実行できる形式で記す。

Sub prog()
Dim x As Integer     ' 変数 x の宣言
	x = 5       ' x に 5 を代入
	MsgBox x    '「5」と書かれた MsgBox が現れる
End Sub

現れる MsgBox は以下であるが、これでは少々そっけない。



これ以降の例は、MsgBox 部のみ載せる。

次の例は、MsgBox の後ろに「"xの値は" & x」と記している。記号「&」により「"xの値は"という文字列」「x (の値)」が連結されて一つの文字列「"xの値は5"」が作成される

	MsgBox "xの値は" & x    '「xの値は5」と書かれた MsgBox が現れる

現れる MsgBox は以下である。少し読みやすくなった。



次の例は、一つの文字列「"xの値は5です"」を表示する命令である。やはり記号「&」が利用されていることに注意しよう。

	MsgBox "xの値は" & x & "です"  '「xの値は5です」と書かれた MsgBox が現れる

現れる MsgBox は以下である。あとは好みの問題であろう。



(おまけ)
MsgBox の出力を、1つのダイアログ内で改行するには、以下のように 「Chr(10)」を連結すると良い。

MsgBox "1行目です" & Chr(10) & "2行目です"



四則演算

本ページの最後に、VBA における数値の四則演算に用いる演算子についてまとめておこう。
+ 加算
- 減算
* 乗算
/ 実数の除算
\ 整数の除算の商 (左の記号は環境によって「¥」か「\」かのどちらかに見える)
Mod 整数の除算における余り

例えば、以下のように x と y にそれぞれ 5 と 10 が格納されているとき、z = x + y によって何が起こるかを考える。

Dim x As Integer
Dim y As Integer
Dim z As Integer
	x = 5
	y = 10
	z = x + y

実現されることのイメージが数である。右辺の 5 と 10 の和が計算され、それが左辺の z に格納されることが示されている。
それほど違和感のある計算ではないと思う。



加算/減算についてはそれほど問題ないだろう。乗算も、記号が「*」であること以外は問題ないだろう。
ただし、除算は少々注意を要する

我々にとって馴染み深いのは、以下の実数の場合であろう。記号(演算子)「/」により 5 ÷ 3 を計算したときに、1.6666…が計算され格納される。

' 実数の場合
Dim x As Double
Dim y As Double
Dim z As Double
	x = 5
	y = 3
	z = x / y   ' 実数 z には 1.666...が格納される

注意が必要なのは、以下の整数の除算である。整数の除算は、記号(演算子)がそもそも違い、「\」を用いる。
なお、この記号は環境によって「¥」か「\」かのどちらかに見える。
それにより、小学校で学んだ割算の商が計算される。 「5 ÷ 3 = 1 余り 2」なのであるから、「5 \ 3」の計算結果は 1 である。
同様に、余りを求める記号(演算子)もあり、それが Mod である。「5 Mod 3」の計算結果は 2 である。

' 整数の場合
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim v As Integer
	x = 5
	y = 3
	z = x \ y     ' 整数 z には除算の商である 1 が格納される
	v = x Mod y   ' 整数 v には除算の余り 2 が格納される





←[応用] ボタンからのプログラムの起動キーボードからの入力→

Excel で学ぶ Visual Basic for Applications (VBA)に戻る