Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 – 演算子

Excel VBA VBA
スポンサーリンク

演算子は「値と値のあいだで何をしたいか」を表す記号

演算子は、
「足したい」「引きたい」「比べたい」「つなげたい」「条件を組み合わせたい」
といった“意図”を、記号で表現したものです。

VBAでは、
数値を計算する演算子
値を比べる演算子
条件を組み合わせる演算子
文字列をつなげる演算子
など、いくつかの種類があります。

まずは「よく使うもの」だけをしっかり押さえれば十分です。
そこから少しずつ広げていきましょう。


数値の演算子(四則演算+α)

基本の四則演算

数値に対して使う演算子は、感覚的には算数とほぼ同じです。

Sub SampleArithmetic()

    Dim a As Long
    Dim b As Long
    Dim c As Double

    a = 10
    b = 3

    c = a + b      ' 足し算 → 13
    c = a - b      ' 引き算 → 7
    c = a * b      ' 掛け算 → 30
    c = a / b      ' 割り算 → 3.3333...

End Sub
VB

ここでのポイントは、割り算 / は「小数を含む結果」になることです。
整数同士でも、結果は Double になります。

整数同士の割り算(\)と余り(Mod)

「割り算の“商”だけ欲しい」「余りだけ欲しい」という場面もあります。

Sub SampleIntegerDiv()

    Dim a As Long
    Dim b As Long
    Dim q As Long
    Dim r As Long

    a = 10
    b = 3

    q = a \ b      ' 整数の商 → 3
    r = a Mod b    ' 余り → 1

End Sub
VB

a \ b は「10 ÷ 3 の整数部分だけ」
a Mod b は「10 ÷ 3 の余り」
というイメージです。

ループや「何行ごとに処理する」などの場面で、Mod はよく使います。


比較演算子(値を比べる)

等しい・等しくない・大小比較

If 文などで「条件」を書くときに使うのが比較演算子です。

Sub SampleCompare()

    Dim a As Long
    Dim b As Long

    a = 10
    b = 5

    If a = b Then
        MsgBox "a と b は等しい"
    End If

    If a <> b Then
        MsgBox "a と b は等しくない"
    End If

    If a > b Then
        MsgBox "a は b より大きい"
    End If

    If a >= b Then
        MsgBox "a は b 以上"
    End If

    If a < b Then
        MsgBox "a は b より小さい"
    End If

    If a <= b Then
        MsgBox "a は b 以下"
    End If

End Sub
VB

ここでの「=」は、代入ではなく「比較」です。
「a と b が等しいか?」を判定して、True / False を返します。

<> は「等しくない」、
>, <, >=, <= は、数学と同じ意味で使えます。

文字列の比較

文字列同士も比較できます。

If name = "山田" Then
    MsgBox "山田さんです"
End If
VB

ただし、文字列の大小比較(> や <)は、文字コード順になるので、
超初心者のうちは「等しいかどうか」だけに絞って使うほうが分かりやすいです。


論理演算子(条件を組み合わせる)

And と Or の基本

複数の条件を組み合わせたいときに使うのが論理演算子です。

Sub SampleLogical()

    Dim score As Long
    score = 75

    If score >= 60 And score < 80 Then
        MsgBox "60点以上80点未満です"
    End If

    If score < 60 Or score >= 80 Then
        MsgBox "60未満か80以上です"
    End If

End Sub
VB

条件1 And 条件2 は「両方とも True のときだけ True」
条件1 Or 条件2 は「どちらか一方でも True なら True」
という意味です。

「60以上かつ80未満」
「60未満または80以上」
のように、日本語で言い換えながら読むと理解しやすくなります。

Not で条件を反転する

Not は、True と False をひっくり返します。

If Not score >= 60 Then
    MsgBox "60点未満です"
End If
VB

Not score >= 60 は、「score >= 60 が False のとき True」
つまり「60未満」のときに True になります。

ただし、Not を多用すると条件が読みにくくなることもあるので、
「日本語にしたときに分かりやすいか」を意識して使うのがおすすめです。


文字列演算子(& でつなぐ)

& は「文字列をくっつける」演算子

文字列同士をつなげるときは & を使います。

Sub SampleStringOp()

    Dim firstName As String
    Dim lastName As String
    Dim fullName As String

    firstName = "太郎"
    lastName = "山田"

    fullName = lastName & " " & firstName

    MsgBox fullName

End Sub
VB

& は「文字列の足し算」のようなイメージです。
数値の足し算と混ざらないように、
「数値の計算は +」「文字列の結合は &」
と使い分ける癖をつけておくと安全です。


代入演算子(=)の位置で意味が変わることを整理する

代入としての「=」

Dim a As Long
a = 10
VB

ここでは、「右側の 10 を左側の a に入れる」という“代入”です。
文の先頭付近に出てくる「=」は、基本的に代入と考えてOKです。

比較としての「=」

If a = 10 Then
    ' 比較
End If
VB

If の中に出てくる「=」は、「a と 10 が等しいか?」という“比較”です。
True / False を返す式の一部として使われています。

同じ記号でも、
「文の形」と「前後の文脈」で意味が変わる、というのがポイントです。


演算子の優先順位とカッコの使い方

優先順位の基本

VBAにも「どの演算を先に計算するか」という優先順位があります。
ざっくり言うと、

掛け算・割り算が先
足し算・引き算が後

という、算数と同じルールです。

Dim x As Long
x = 2 + 3 * 4   ' 2 + (3 * 4) → 14
VB

3 * 4 が先に計算され、その結果に 2 が足されます。

カッコで「自分の意図」をはっきりさせる

優先順位を覚えるよりも大事なのは、
「カッコを使って、意図を明確にする」ことです。

x = (2 + 3) * 4   ' (2 + 3) を先に計算 → 20
VB

このように書けば、
「2 と 3 を先に足してから 4 を掛けたい」という意図が、
自分にも他人にも、そしてコンピュータにもはっきり伝わります。

複雑な式になりそうなときほど、
「カッコでグループ分けする」
という習慣をつけておくと、バグがぐっと減ります。


超初心者向け「演算子」の意識ポイントまとめ

演算子は、コードの中でとにかく頻繁に出てきます。
だからこそ、ここを“感覚レベル”で押さえておくと、他の文法も理解しやすくなります。

意識してほしいのは、次のようなことです。

数値の計算は +, -, *, /, , Mod
値の比較は =, <>, >, <, >=, <=
条件の組み合わせは And, Or, Not
文字列の結合は &
「=」は、代入と比較で意味が違う(文脈で判断する)
迷ったらカッコで「どこからどこまでを先に計算するか」をはっきり書く

タイトルとURLをコピーしました