VBA では、四則演算(たす・ひく・かける・わる)はどう表すのでしょう?
四則演算
今までに、説明なしに足し算を行ってきました。
でも、なんとなくでわかりますよね。
足し算・引き算
足し算はこんな感じで、 変数=数値+数値 でした。
Sub test1()
'---- 変数宣言 -----
Dim a as integer
'---- プログラム -----
a = 5 'a に 5を代入
a = a + 3 'a に 3を足し算
MsgBox(a)
End Sub
ここから、引き算も普通に「-」をつかえば良さそうだとは予想が付きますね。確かめてみましょう。
Sub test2()
'---- 変数宣言 -----
Dim a as integer
'---- プログラム -----
a = 5 'a に 5を代入
a = a - 3 'a から 3 を足し算
MsgBox(a)
End Sub
実行してみると、「2」が表示されたと思います。
掛け算・割り算
でも掛け算や割り算の符号は、どうでしよう?
「かける<変換>」で出てくる「×」で行けるのでしょうか?
Sub test3()
'---- 変数宣言 -----
Dim a as integer
'---- プログラム -----
a = 5 'a に 5を代入
a = a × 3 'a に 3を掛け算
MsgBox(a)
a = a ÷ 5
MsgBox(a)
End Sub
エディタに入れてた時点で文字が赤くなっていて、なんとなくダメそうです。
▶を押して実行してみると、案の定エラーのダイアログが出てきました。
実は × や ÷ は、漢字などと同じくコンピュータの中では何文字分かのデータを使う(いわゆる)全角文字になっています。
ところがプログラムの中で計算などに使う記号は、原則として(いわゆる)「半角」を使います。
そんなわけでVBA では、掛け算の記号として「*」、割り算の記号として「/」を使います。Excelのワークシートとおんなじですね。
(他のブログラム言語でも *が掛け算、/が割り算のことが多いようです)
試してみましょう
Sub test3a()
'---- 変数宣言 -----
Dim a as integer
'---- プログラム -----
a = 5 'a に 5を代入
a = a * 3 'a に 3を掛け算
MsgBox(a) 'a = 3*5 = 15なので15を表示
a = a /5 'a を5で割る
MsgBox(a) 'a = 15/5 = 3なので3を表示
End Sub
一回目のMsgBoxで15、二回目のMsgBoxで3が出てきたと思います。
演算子
計算に使う、「+」「-」「*」「/」 を「演算子」(えんざんし)と呼びます。
自分の中では、「計算のしるし」でも「計算マーク」でもなんでもいいんですけど、参考書や他の解説ページに出てくるかもしれませんので、「演算子」という名前だけは覚えておいてください。
ある値に、なにかの演算をするので演算子ですね。
たとえば「+」であれば
「演算子の後ろの数値を加える」
という演算を行うわけです。
実際には使い方のパターンは
変数 = ある値 [演算子] 別の値
となる場合がほとんどだと思います。
演算子の種類
演算子は「+」「-」「*」「-」だけではありません。
指数(右肩にのる小さな数字)や、割り算のあまりを求るものもあります。
計算をするための演算子は「算術演算子」といい、ほかにも次のような演算子があります。
- 「<」「>」のように大小を比較する記号 (比較演算子)
- 文字列を連結するための記号 (連結演算子)
- 「かつ」「または」のように論理の演算を行う記号 (論理演算子)
VBAにはどんな演算子が用意されているのかは、Microsoft の言語リファレンスにまとめてありました。
MOSなどの試験用に覚えるのでなければ、「こんなのがあったなぁ」程度だけ覚えておいて、必要になったときにMicrosoftの説明を見るようにすればよいかと思います。
「VBA 演算子の概要」という検索キーワードは覚えておく必要があるかもしれませんね。
ちなみに変数に数字を代入するために今までにも普通に使っていた「=」も演算子の一つでした。(比較演算子なのか算術演算子なのかリファレンスからはよくわかりませんけど、使えればオッケーかなと)
演算の優先順位
こちらも、Microsoft の言語リファレンスの別の項にまとめられていました。
でも、基本は算数と同じようですが、なんかイマイチよくわかりません。
()の中が優先されるということなので、めんどくさがらずに()をつけておけば問題なさそうです。
また、不要な()をつけても正しくついていればエラーにはならないようです。
3 + 5 * 6 → 3 + (5 * 6) でも問題なし
ですので、後々の手直し時の勘違いを防ぐために、式としては必要なくても、自分がわかりやすいよう()をつけておくのもありですね。
まとめ
今回は、演算子について勉強しました。
- たすひくかけるわるの記号は「演算子」とよぶ
- VBAでの足し算の演算子は「+」、引き算は「-」(算数と同じ)
- VBAでの掛け算の演算子(記号は)「*」、割り算は「/」(半角)
- 演算子は四則演算以外にもいろいろある。
でもとりあえずは覚えてなくても、必要になったときに検索するばどうにかなる。- 算術演算子
- 比較演算子
- 連結演算子
- 論理演算子
- 優先順位も色々ルールがあるけど、とりあえず優先順に()で括っていけばOK
必要になったら検索 - ()でくくるのは、後々の間違い防止にも有効
次回は
MsgBox()を使ってばかりなので、そろそろEXCELシートにアクセスしてみたいなぁと思っていますが、VBA 開発画面のエディタと▶ボタン以外の機能の説明も捨てがたいな思っています。