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

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2021-06-09 最終更新日: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の小数以下の演算誤差について

・小数以下の演算誤差とは ・小数以下の演算誤差を実際のVBAで確認 ・データ型で小数以下の演算誤差に対応 ・小数以下の演算誤差にデータ型以外で対応する ・VBAの小数以下の演算誤差の最後に
スピルでVBAの何が変わったか
・Rangeオブジェクトに追加されたプロパティ ・セルに数式を設定する場合 ・1次元配列を返すユーザー定義関数 ・2次元配列を返すユーザー定義関数 ・JAG配列を返すユーザー定義関数 ・スピルのVBAでの活用について
CharactersプロパティとCharactersオブジェクト
・Charactersプロパティ ・Charactersオブジェクト ・CharactersプロパティとCharactersオブジェクトの使用例
ユーザーに絶対に停止させたくない場合のVBA設定
ユーザー操作によりマクロVBAが実行中に停止させられてしまう場合があります。再実行可能であれば問題ありませんが、途中で強制停止された場合のデータ保証が出来ないと言った場合もあるでしよう。マクロ実行でも、以下のキーボード操作でVBAは停止できてしまいます。
印刷範囲の設定・印刷範囲のクリア
・印刷範囲の設定 ・印刷範囲の取得 ・印刷範囲のクリア
VBAの省略可能な記述について
・変数の宣言 ・変数宣言のデータ型 ・Application.ScreenUpdating = True : Application.DisplayAlerts = True ・Applicationのプロパティ ・Applicationのメソッド ・Range.Value ・プロシージャーのCall ・メソッドのCall ・Let ・Next 変数 ・Step 1 ・引数が無い場合の() ・名前付き引数 ・メソッドの規定値 ・組み込み列挙 ・関数のモジュール名 ・コレクションのItem ・VBAの省略可能な記述の最後に
VBAのVariant型について
・Variant型変数のデータ型を調べる ・Variant型変数のメモリアドレス ・Variant型どうしの算術演算 ・Variant型どうしの比較演算 ・RangeのValueプロパティの比較 ・ユーザー定義型(Type)とバリアント(Variant)変数 ・Variant型の配列 ・配列をVariant型の仮引数に渡す ・RangeオブジェクトをVariant型の仮引数に渡す
VBAのインデントについて
・VBAのインデントの模範 ・VBAのブロックについて ・VBAのインデントの具体例 ・インデントの最後に
VBAの演算子まとめ(演算子の優先順位)
列幅不足による###表示や指数表示を判定する
・Range.Textブロバティ ・列幅不足を判定するVBA ・セル幅不足を判定するVBAの使用例
VBA10大躓きポイント(初心者が躓きやすいポイント)
・変数とは ・どこでインデントすれば良い ・カンマ「,」とピリオド「.」と半角スペース「 」 ・「:=」ってどこで使う ・「"」が多すぎて ・暗黙の型変換とは ・用語が難しい(オブジェクト、プロパティ、メソッド) ・配列とは ・ByValとByRef ・VBAを書く場所


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

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


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

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




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


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



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