今回は演算子(えんざんし)について学びます。何だか難しい言葉がついていますが難しくありません。ではさっそく学んでいきましょう!
演算子とは?
演算子とは、プログラミングにおいて色々な計算をするために用いる記号のことです。VBAでの演算子を大きく分けると、以下のような種類があります。ちょっと難しい言葉が出てきましたが、言葉を覚える必要はありません!演算子によって何ができるのか、それを理解することのほうが重要です。
- 算術演算子
- 文字列演算子
- 代入演算子
- 比較演算子
- 論理演算子
演算子にはたくさんの種類があります。最初からすべての演算子を覚えようとすると混乱してしまうので、ここでは重要な演算子のみに絞って解説します。
算術演算子
算術演算子は、計算を行うための演算子です。具体的には、以下のような算術演算子があります。算数の四則演算や数学の指数計算をやっているだけなので、直感的に理解できると思います。
演算子 | 役割 | 使用例 |
---|---|---|
+ | 数値の「和」を計算する | 2 + 3(結果は5) |
– | 数値の「差」を計算する | 7 – 4(結果は3) |
* | 数値の「関」を計算する | 3 * 5(結果は15) |
/ | 数値の「商」を計算する | 8 / 2(結果は4) |
^ | 数値の「累乗」を計算する | 2 ^ 3(結果は8) |
実際にサンプルコードで確認してみましょう。イミディエイトウィンドウに表示された結果は、ちゃんと意図したものになったでしょうか?
1 2 3 4 5 6 7 |
Sub 算術演算子 Debug.Print 2 + 3 Debug.Print 7 - 4 Debug.Print 3 * 5 Debug.Print 8 / 2 Debug.Print 2 ^ 3 End Sub |
文字列演算子
文字列演算子(&)は、文字列を連結するための演算子です。&の前後にある文字列をくっつける役割を果たします。簡単ですね。
1 2 3 |
Sub 文字列演算子 Debug.Print "阪神" & "タイガース" End Sub |
代入演算子
代入演算子(=)は、変数やプロパティに値を代入するための演算子です。右側の値が、左側の変数に代入されます。代入演算子の場合、左側は必ず変数またはプロパティが来ます。
1 2 3 4 5 6 |
Sub 代入演算子 Dim 球団名 As String 球団名 = "阪神" & "タイガース" Debug.Print 球団名 End Sub |
比較演算子
比較演算子は、二つの値を比較し、その結果を得るための演算子です。結果はBoolean型と呼ばれるデータ型で返されます。Boolean型はTrueかFalseかの二つの値を持つデータ型で、比較演算子の結果が真であればTrue、結果が偽であればFalseを返します。
この比較演算子は単体で使われることは少なく、別のページで説明するIfステートメントやWhileステートメントなどの制御構文と組み合わせて使われることが圧倒的に多いです。
以下は主な比較演算子の一覧です。利用頻度があまり高くない論理演算子として、他にIs、Likeがあります。
演算子 | 役割 | 使用例 |
---|---|---|
< | 右辺の値が左辺の値より大きいときにTrueを返す | 2 < 3(結果はTrue) |
<= | 右辺の値が左辺の値以上のときにTrueを返す | 5 <= 5(結果はTrue) |
> | 左辺の値が右辺の値より大きいときにTrueを返す | 4 > 2(結果はTrue) |
>= | 左辺の値が右辺の値以上のときにTrueを返す | 3 >= 3(結果はTrue) |
= | 左辺の値と右辺の値が等しい時にTrueを返す | 7 = 7(結果はTrue) |
<> | 左辺の値と右辺の値が等しくない時にTrueを返す | 3 <> 4(結果はTrue) |
比較演算子の中で注意すべきなのは=です。お気づきのとおり、この演算子(=)は、代入演算子と全く同じ形です。その時のコンテキスト(文脈)によって代入演算子にもなり、比較演算子にもなるので注意が必要です。
実際にサンプルコードで確認してみましょう。イミディエイトウィンドウに表示された結果は、ちゃんと意図したものになったでしょうか?
1 2 3 4 5 6 7 8 |
Sub 比較演算子 Debug.Print 2 < 3 Debug.Print 5 <= 5 Debug.Print 4 > 2 Debug.Print 3 >= 3 Debug.Print 7 = 7 Debug.Print 3 <> 4 End Sub |
論理演算子
論理演算子は、論理演算をするために用いられる演算子です。論理演算などとちょっと難しい言葉が使われていますが、要は二つの式の条件を判定したり、式の否定をするために使われるというだけで、中身は難しくありません。
論理演算子はその性質上、IfステートメントやWhileステートメントと同時に使われることが多いです。利用頻度があまり高くない論理演算子として、他にXor、Eqv、Impがあります。
演算子 | 役割 | 使用例 |
---|---|---|
And | 2つの条件式が両方ともTrueの時にTrueを返す | 式A And 式B |
Or | 2つの条件式のどちらか片方がTrueの時にTrueを返す | 式A Or 式B |
Not | 式の否定を返す | Not 式A |
野球の打者成績を判定する例を用いて、論理演算子の使い方を説明してみます。
And演算子の例
「打率が3割以上、かつホームランが30本以上」ならいい打者だとする条件式を立てたいとします。その場合、And演算子と上で学んだ比較演算子を使って、以下のような式を立てることができます。
1 2 |
打率 >= 0.3 And ホームラン数 >= 30 '打率が3割以上「かつ」ホームランが30本以上 |
この場合、両方の条件を満たした時に、式全体がTrue(真)になります。片方だけの条件を満たしている場合、例えば打率が3割以上あってもホームランが20本なら、式全体はFalse(偽)になります。
Or演算子の例
先ほどのAnd演算子の例では、「打率が3割以上、かつホームランが30本以上」ならいい打者だとする条件式を立てました。今度は「打率が3割5分以上、またはホームランが40本以上」ならいい打者だとします。
先ほどより数値の条件は厳しくなっていますが、片方の条件を満たせばいいので、打率かホームランのどちらかに特化したバッターならこの条件に当てはまります。Or演算子と上で学んだ比較演算子を使って、以下のような式を立てることができます。
1 2 |
打率 >= 0.35 Or ホームラン数 >= 40 '打率が3割5分以上「または」ホームランが40本以上 |
この場合、片方の条件を満たした時に、式全体がTrue(真)になります。極端な例になりますが、打率が1割でもホームラン数が40本以上ならいい打者だという条件式になります。
Not演算子の例
Not演算子はAndやorとちょっと趣が異なります。式全体を否定、つまり式がTrueならFalse、FalseならTrueに反転するのがNot演算子の役割です。具体的な例で見てみましょう。
「打率が3割以上」という条件をNot演算子で反転してみましょう。つまり3割以下のバッターを抜き出すという条件になります。
1 |
Not(打率 >= 0.3) |
Not演算子はAnd演算子やOr演算子ほど利用頻度は多くありませんが、簡単に条件を反転できるので使い勝手のいい演算子です。