「演算子(えんざんし)」とは?
VBAやプログラミングを学ぶ上で「演算子」はとても大切です。
この演算子とは、計算をしたり、データを比べたり、、文字同士をくっつけたりする場合に使う記号です。
演算子にはいくつかの種類があります。
今回は「算術演算子」について解説いたします。
「算術演算子(さんじゅつえんざんし)」とは?
「算術演算子」とは、加算(足し算)、減算(引き算)、乗算(掛け算)、除算(割り算)などの計算を行う場合に使います。
以下の例を示しましょう。
Sub test5a()
Dim A As Integer
Dim B As Integer
Dim Answer As Integer '「Answer」は日本語で「答え」という意味
A = 10
B = 2
Answer = A + B
MsgBox (Answer)
End Sub
この「test5a関数」を実行すると「12」とメッセージボックスで表示されます。
これは簡単すぎて解説するまでもないかもしれませんが、一応解説いたします。
まず変数Aに10、変数Bに2を代入します。
A = 10
B = 2
次に変数AnswerにA + B を代入します。
この「+」記号が算術演算子です。
「+」の算術演算子は加算です。
よって、A(10) + B(2)で変数Answerには、加算された結果「12」が代入されます。
Answer = A + B
後はMsgBoxで変数Answerを表示すれば「12」が表示されるわけです。
算術演算子の種類
算術演算子の記号は以下の通りです。
演算子 | 読み方 | 説明 | 使用例 | 結果 |
---|---|---|---|---|
+ | プラス | 加算(足し算) | 10 + 2 | 12 |
– | マイナス | 減算(引き算) | 10 – 2 | 8 |
* | アスタリスク | 乗算(掛け算) | 10 * 2 | 20 |
/ | スラッシュ | 除算(割り算) | 10 / 2 | 5 |
^ | キャレット | 累乗(べき乗) | 10 ^ 2 | 100 |
\ | 円マーク | 割り算の商 | 10 \ 3 | 3 |
Mod | 持っど | 割り算の余り | 10 Mod 3 | 1 |
これらの演算子を使うことで、VBAのプログラミングの中で数字の計算が可能です。
これら演算子は、他のプログラミング言語でもほぼ共通ですので、しっかり覚えておきましょう。
<補足情報>変数宣言による出力結果の違いについて
前回、変数宣言について説明いたしました。
変数には変数宣言する事により、代入できる範囲が決まっています。
以下のソースコードを見て下さい。
Sub test5b()
Dim A As Integer
Dim B As Integer
Dim Answer1 As Integer
Dim Answer2 As Integer
A = 10
B = 3
Answer1 = A / B
Answer2 = A ¥ B
MsgBox (Answer1)
MsgBox (Answer2)
MsgBox (10 / 3)
MsgBox (10 ¥ 3)
MsgBox (10 Mod 3)
End Sub
最後のMsgBoxが4つあります。
2つは変数を出力したもので、もう2つは直接計算式を入れたものです。
出力結果は「MsgBox (10 Mod 3)」以外、同じになるでしょうか?
答えは同じになりません。
答えは以下の通りになります。
- MsgBox (Answer1) ・・・ 3
- MsgBox (Answer2) ・・・ 3
- MsgBox (10 / 3) ・・・ 3.33333333333333
- MsgBox (10 \ 3) ・・・ 3
- MsgBox (10 Mod 3) ・・・ 1
基本的にはどれも「10÷3」で、割り切らない場合は商が「3」で余り「1」、小数点まで割り切った場合は「3.33333…..」と無限小数になる事を頭にいれておいて下さい。
1つずつ解説いたします。
MsgBox (Answer1)
まずAnswer1は「A / B」で割り算です。
変数Answer1はInteger型なので、扱える値は「-32,768~32,767」の範囲の整数です。
よって割り切れない小数点は入れる事ができませんので、Answer1は「3」になります。
MsgBox (Answer2)
Answer2は「A \ B」で割り算の商を求めています。
したがって商が「3」なので、そのままAnswer2は「3」になります。
MsgBox (10 / 3)
「MsgBox (10 / 3)」の「10 / 3」は「3.33333…..」の無限小数になります。
よって「MsgBox (10 / 3)」は「3.33333333333333」になります。
小数点がなぜ14桁までかと言うと、こちらは変数の型宣言はしていませんが、型としてはDouble型が自動で割り当てられています。
このDouble型は約15桁の数字が扱えますので、上記のような出力結果になりました。
MsgBox (10 \ 3)
「MsgBox (10 \ 3)」は割り算の商を求めています。
これは「MsgBox (Answer2)」と同じなので、「MsgBox (10 \ 3)」は「3」になります。
MsgBox (10 Mod 3)
「MsgBox (10 Mod 3)」は割り算の余り求めています。
余りは「1」ですので、「MsgBox (10 Mod 3)」は「1」になります。
宣言した変数で値が変化する事に注意しよう
変数宣言により、変数に代入できる値は変わります。
よって、上記で説明した通り、代入した時点で小数点が切り捨てられている事を理解していないと、その後の計算で変数を使った際に、意図した結果とは違う結果になってしまいますので、注意しましょう。