VBA技術解説
VBAの演算子まとめ(演算子の優先順位)

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
最終更新日:2021-08-19

VBAの演算子まとめ(演算子の優先順位)


VBAの演算子はそれほど多くはないので通常使う範囲では困ることは少ないのですが、
他人の書いたVBAで特殊な使い方がされていた場合等で悩むことは結構あるかもしれません。
そのような時の参考として演算子のまとめになります。


VBA入門の以下の解説ページの演算子についてのまとめと補足です。

第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
あるセルの文字と、あるセルの文字をくっつけて、別のセルに表示する、よくある事例であり、頻繁に行われることです。A1セルに"abc" B1セルに"123" この時に、C1セルに"abc123"を入れるような場合のマクロVBAになります。
第15回.四則演算と注釈(コメント)
エクセルは表計算ソフトですから、計算が出来なくては話になりません。四則演算(加減剰余)は必須です。この四則演算で使う算術演算の演算子は、ワークシートの演算子と同じです。あわせて、注釈(コメント)の書き方も覚えましょう。
第20回.条件分岐(If)
・Ifステートメントの構文 ・IFステートメントの条件式 ・Ifステートメントの使用例文 ・Ifステートメントのネスト(入れ子) ・サイト内のIfステートメント参考ページ ・最後に


特に解説をするということではなく、演算子の全体についてここにまとめて記載し若干の補足を加えたものになります。

全体目次

演算子の優先順位

算術演算子 > 比較演算子 > 論理演算子
つまり、最初に算術演算子、次に比較演算子、最後に論理演算子が評価されます。
各演算子グループの中では、より上が優先順位が高くなります。











↓ 
算術演算子 比較演算子 論理演算子
^(指数) すべて同じ
優先順位
=
<>
<
>
<=
>=
Like
Is
Not
-(符号反転 ) And
* / Or
\(割り算の商) Xor
Mod(割り算の余り) Eqv
+ - Imp
&(文字列連結)

同一優先順位の場合は、式の左から右へ順に評価されます。

優先順位は括弧()で括ることで変更できます。
括弧()内は他の式より先に評価されます。
上記の優先順位を知らなくても読めるように適宜()括弧でくくるようにしてください。

※各演算子については、この下のセクションを参照してください。

MS公式ページ 演算子の優先順位


算術演算子

演算子 説明
+ 足し算
- 引き算(符号反転)
* 掛け算
/ 割り算
\ 割り算の商
Mod 割り算の余り
^ 指数(べき乗)

第15回.四則演算と注釈(コメント)|VBA入門
エクセルは表計算ソフトですから、計算が出来なくては話になりません。四則演算(加減剰余)は必須です。この四則演算で使う算術演算の演算子は、ワークシートの演算子と同じです。あわせて、注釈(コメント)の書き方も覚えましょう。


比較演算子

比較演算子 意味
= 等しい
<> 等しくない
> より大きい
>= 以上
< より小さい
<= 以下
Like パターンマッチング
Is オブジェクト参照変数を比較

第20回.条件分岐(If)|VBA入門
・Ifステートメントの構文 ・IFステートメントの条件式 ・Ifステートメントの使用例文 ・Ifステートメントのネスト(入れ子) ・サイト内のIfステートメント参考ページ ・最後に

第49回.Like演算子とワイルドカード|VBA入門
・Like演算子 ・パターン文字列式(ワイルドカード、文字リスト、文字範囲) ・Like演算子の使用例 ・正規表現について


論理演算子

論理演算子 意味 条件例 結果
And 論理積 True And True TRUE
True And False FALSE
False And True FALSE
False And False FALSE
Or 論理和 True Or True TRUE
True Or False TRUE
False Or True TRUE
False Or False FALSE
Xor 排他論理和 True Xor True FALSE
True Xor False TRUE
False Xor True TRUE
False Xor False FALSE
Not 論理否定 Not True FALSE
Not False TRUE
Eqv 論理等価
Imp 論理包含

第20回.条件分岐(If)|VBA入門
・Ifステートメントの構文 ・IFステートメントの条件式 ・Ifステートメントの使用例文 ・Ifステートメントのネスト(入れ子) ・サイト内のIfステートメント参考ページ ・最後に


連結演算子

第14回.文字の結合(&アンパサンド)と継続行(_アンダーバー)
あるセルの文字と、あるセルの文字をくっつけて、別のセルに表示する、よくある事例であり、頻繁に行われることです。A1セルに"abc" B1セルに"123" この時に、C1セルに"abc123"を入れるような場合のマクロVBAになります。

上記では+演算子が加算になるか連結になるかの説明を省略しましたので、以下に記載します。
MS公式 +演算子

条件 Then
両方の式が数値データ型(Byte、Boolean、Integer、Long、Single、Double、Date、Currency、Decimal) の場合 加算
両方の式がStringの場合 連結
一方の式が数値データ型で、もう一方の式が任意のVariant(Null以外) の場合 加算
一方の式がStringで、もう一方の式が任意のVariant(Null以外) の場合 連結
1つの式が空のバリアント型 (Variant) もう一方の式がそのまま返されます
一方の式が数値データ型で、もう一方の式がStringの場合 エラー(型が一致しません)
いずれかの式がNullの場合 Null
両方の式がVariant式:両方のVariant式が数値の場合 加算
両方の式がVariant式:両方のVariant式が文字列の場合 連結
両方の式がVariant式:一方のVariant式が数値で、もう一方が文字列の場合 加算


単項演算子

演算子のほとんどは二項演算子です。
つまり、演算子の左右の項に対して演算を行うものです。
しかし、
-(符号反転)
Not(論理否定)
この3つの演算子は単項演算子になります。
^(指数)は直前の項に対して演算を行います。
-(符号反転)とNot(論理否定)は直後の項に対して演算を行います。

-(符号反転)は算術演算子の中では^(指数)に次いで優先順位が高くなります。
Not(論理否定)は論理演算の中では最も優先順位が高くなります。




同じテーマ「マクロVBA技術解説」の記事

スピルでVBAの何が変わったか
CharactersプロパティとCharactersオブジェクト
ユーザーに絶対に停止させたくない場合のVBA設定
印刷範囲の設定・印刷範囲のクリア
VBAの省略可能な記述について
VBAのVariant型について
VBAのインデントについて
VBAの演算子まとめ(演算子の優先順位)
列幅不足による###表示や指数表示を判定する
OneDrive使用時のThisWorkbook.Pathの扱い方
セル個数を返すRange.CountLargeプロパティとは


新着記事NEW ・・・新着記事一覧を見る

シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-08-24)
ランクによりボイントを付ける(同順位はポイントを分割)|ツイッター出題回答 (2023-08-22)
OneDrive使用時のThisWorkbook.Pathの扱い方|VBA技術解説(2023-07-26)
列幅不足による###表示や指数表示を判定する|VBA技術解説(2023-07-12)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-07-04)
シート関数のCOUNTIFS,SUMIFS,MAXIFSと同じ処理|Power Query(M言語)入門(2023-02-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.条件分岐(IF)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ