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 では、掛け算の記号として「*」、割り算の記号として「/」を使います。
(他のブログラム言語でもたいてい *が掛け算、/が割り算のようです)
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
演算子
計算に使う、「+」「-」「*」「/」 を「演算子」(えんざんし)と呼びます。
ある値に、なにかの演算をするので演算子ですね。
たとえば「+」であれば
「演算子の後ろの数値を加える」
という演算を行うわけです。
実際には使い方のパターンは
変数 = ある値 [演算子] 別の値
となる場合がほとんどだと思います。
演算子の種類
演算子は「+」「-」「*」「-」だけではありません。
指数(右肩にのる小さな数字)や、割り算のあまりを求るものもあります。
計算をするための演算子は「算術演算子」といい、ほかにも次のような演算子があります。
- 「<」「>」のように大小を比較する記号 (比較演算子)
- 文字列を連結するための記号 (連結演算子)
- 「かつ」「または」のように論理の演算を行う記号 (論理演算子)
VBAにはどんな演算子が用意されているのかは、Microsoft の言語リファレンスにまとめてありました。
MOSの試験用に覚えるのでなければ、「こんなのがあったなぁ」程度だけ覚えておいて、必要になったときにMicrosoftの説明をみるようにすればよいかと思います。
「VBA 演算子の概要」という検索キーワードは覚えておく必要があるかもしれませんね。
ちなみに変数に数字を代入するために今までにも普通に使っていた「=」も演算子の一つでした。(比較演算子なのか算術演算子なのかリファレンスからはよくわかりませんけど、使えればオッケーかなと)
演算の優先順位
こちらも、Microsoft の言語リファレンスの別の項にまとめられていました。
基本は算数と同じようですが、なんかイマイチよくわかりません。
()の中が優先されるということなので、めんどくさがらずに()をつけておけば問題なさそうです。
また、不要な()をつけてもただしくついていればエラーにはならないようです。
3 + 5 * 6 → 3 + (5 * 6) でも問題なし
ですので、後々の手直し時の勘違いを防ぐためにも、()をつけておいたほうがよさそうです。
まとめ
今回は、演算子について勉強しました。
- たすひくかけるわるの記号は「演算子」とよぶ
- VBAでの足し算の演算子は「+」、引き算は「-」(算数と同じ)
- VBAでの掛け算の演算子(記号は)「*」、割り算は「/」(半角)
- 演算子は四則演算以外にもいろいろある。
でもとりあえずは覚えてなくても、必要になったときに検索するばどうにかなる。- 算術演算子
- 比較演算子
- 連結演算子
- 論理演算子
- 優先順位も色々ルールがあるけど、とりあえず優先順に()で括っていけばOK
必要になったら検索 - ()でくくるのは、後々の間違い防止にも有効
次回は
MsgBox()を使ってばかりなので、そろそろEXCELシートにアクセスしてみたいなぁと思っていますが、VBA 開発画面のエディタと▶ボタン以外の機能の説明も捨てがたいな思っています。

コメント