VBAの演算子

投稿日: 2024年5月23日

Excel VBAにはさまざまな演算子があり、これらを使用して数値や文字列の操作、論理的な評価、比較などを行います。
以下に、VBAで使用できる演算子をカテゴリ別に示します。

VBAで使用できる演算子

演算子の種類内容
算術演算子足し算、引き算、掛け算、割り算などの演算を行うときに使用する
比較演算子値と値の大きさを比較する時に使用する
論理演算子「または」や「かつ」のように、複数の条件を指定する時に使用する
文字列演算子文字列と文字列を連結するときに使用する
代入演算子右辺の値を左辺に代入する時に使う

算術演算子

演算子説明結果
+加算(足し算)2 + 35
減算(引き算/符号反転(*1))5 – 23
*乗算(掛け算)2 * 36
/除算(割り算)6 / 23
\整数除算(割り算の整数値の答え)(*2)7 \ 23
Mod剰余(モジュロ)(割り算のあまり)7 Mod 21
^べき乗2 ^ 38

*1、数値型の変数で「-x」のように数値の前に「-」を記述すると符号が反転されます。
*2、円マーク「¥」がバックスラッシュ「\」がになってしまうのは文字コードが同じの為問題ありません。和文フォント「¥」 欧文フォント「\」

ExcelのVBAで使用する例になります。

Sub OperatorExample()
    ' 算術演算子の例
    Dim a As Integer
    Dim b As Integer
    Dim result As Integer
    
    a = 10
    b = 3
    result = a + b    ' result = 13
    result = a - b    ' result = 7
    result = a * b    ' result = 30
    result = a / b    ' result = 3.333...
    result = a \ b    ' result = 3
    result = a Mod b  ' result = 1
    result = a ^ b    ' result = 1000
End Sub

比較演算子

比較演算子は条件を満たせばTrue満たせなければFalseが返ってきます。
日本語で考えるとTrueは「はい」Falseは「いいえ」と覚えると分かりやすいです。

演算子説明結果
=等しい5 = 5True
<>等しくない5 <> 3True
>より大きい5 > 3True
<より小さい3 < 5True
>=以上5 >= 5True
<=以下3 <= 5True
Likeパターンマッチング“Hello”Like”He”True
Isオブジェクト比較Worksheets(“Sheet1”) Is Worksheets(2)False
Sub OperatorExample()
    ' 比較演算子の例
    Dim a As Integer
    Dim b As Integer
    Dim isEqual As Boolean
    
    a = 10
    b = 3
    
    isEqual = (a = b)      ' False
    isEqual = (a <> b)     ' True
    isEqual = (a > b)      ' True
    isEqual = (a < b)      ' False
    isEqual = (a >= b)     ' True
    isEqual = (a <= b)     ' False
End Sub

論理演算子

演算子説明結果
And論理積(AND)
条件1を満たし、条件2を満たす。
True And FalseFalse
Or論理和(OR)
条件1を満たすか、または条件2を満たす。
True Or FalseTrue
Not否定(NOT)
条件でない。
Not TrueFalse
Xor排他的論理和(XOR)
条件1を満たし、かつ条件2を満たさない または
条件2を満たし、かつ条件1を満たさない。
True Xor TrueFalse
Eqv論理等価(EQV)
条件1を満たし、かつ条件2を満たす。
または条件1を満たさない、かつ条件2を満たさない
True Eqv TrueTrue
Imp論理含意(IMP)
条件1を満たさないまたは、条件2を満たす。
False Imp TrueTrue

And(アンド) 演算子を使用した例

Sub AndOperatorExample()
    Dim age As Integer
    Dim hasLicense As Boolean
    Dim canDrive As Boolean

    age = 20
    hasLicense = True ' Trueで免許有、Falseで免許無

    ' 年齢が18以上で運転免許を持っている場合のみ運転可能
    canDrive = (age >= 18) And hasLicense

    If canDrive Then
        MsgBox "運転許可"
    Else
        MsgBox "運転不許可"
    End If
End Sub

Or(オア) 演算子を使用した例

Sub OrOperatorExample()
    Dim hasPassport As Boolean
    Dim hasVisa As Boolean
    Dim canTravel As Boolean

    hasPassport = True 'Trueが有り、Falseが無し
    hasVisa = False

    ' パスポートかビザのいずれかを持っていれば旅行可能
    canTravel = hasPassport Or hasVisa

    If canTravel Then
        MsgBox "旅行が行ける"
    Else
        MsgBox "旅行は行けない"
    End If
End Sub

Not(ノット) 演算子を使用した例

Sub NotOperatorExample()
    Dim isRaining As Boolean
    Dim goForAWalk As Boolean

    isRaining = False ' Trueがはい、Falseがいいえ

    ' 雨が降っていなければ散歩に行く
    goForAWalk = Not isRaining

    If goForAWalk Then
        MsgBox "散歩に行ける"
    Else
        MsgBox "散歩は行けない"
    End If
End Sub

Xor(エックスオア) 演算子を使用した例

Sub XorOperatorExample()
    Dim hasTicket As Boolean
    Dim isGuest As Boolean
    Dim canEnter As Boolean

    hasTicket = True
    isGuest = False

    ' チケットを持っているか、ゲストである場合、どちらか一方のみ入場可能
    ' False、False又はTrue、Trueの場合は入場できない
    canEnter = hasTicket Xor isGuest

    If canEnter Then
        MsgBox "入場できます"
    Else
        MsgBox "入場できません"
    End If
End Sub

Eqv(イーキューブイ) 演算子を使用した例

Sub EqvOperatorExample()
    Dim conditionA As Boolean
    Dim conditionB As Boolean
    Dim result As Boolean

    conditionA = True
    conditionB = True

    ' 両方の条件が同じ真偽値の場合に真を返す
    result = conditionA Eqv conditionB

    If result Then
        MsgBox "両方の条件は同じです。"
    Else
        MsgBox "その条件は誤りです。"
    End If
End Sub

Imp(アイエムピー) 演算子を使用した例

Sub ImpOperatorExample()
    Dim conditionA As Boolean
    Dim conditionB As Boolean
    Dim result As Boolean

    conditionA = False
    conditionB = True

    ' Aが偽であるか、または両方の条件が真の場合に真を返す
    result = conditionA Imp conditionB

    If result Then
        MsgBox "その条件は合ってます。"
    Else
        MsgBox "その条件は誤りです。"
    End If
End Sub

文字列演算子

文字列比較演算子は文字列と文字列を連結して一連の文字列にするために使用します。
「+」は加算を意味する算術演算子としても使用されるため、わかりづらくなります。実際に使用する場合は「&」を使用しましょう。

演算子説明結果
&文字列の結合“Hello” & ” World”“Hello World”
+文字列の結合(推奨されない)“Hello” + ” World”“Hello World”

文字列結合を使用したメッセージの作成

Sub DynamicMessage()
    Dim userName As String
    Dim message As String
    
    ' ユーザーからの入力を取得
    userName = InputBox("あなたの名前を入力してください:")
    
    ' 動的なメッセージの作成
    message = "こんにちは, " & userName & "さん! ようこそ"
    
    MsgBox message
End Sub

InputBoxはユーザーが文字を入力することができるダイアログボックスです。

代入演算子

代入演算子の「=」は、プロパティの値を設定したり、変数に値を代入したりすときに使用します。

演算子説明結果
=値を変数に代入するx = 5xに5が代入される

代入演算子 =

最も基本的な代入演算子は = です。この演算子を使用して、右辺の値を左辺の変数に代入します。

Sub BasicAssignment()
    Dim x As Integer
    x = 10  ' xに10を代入
    MsgBox "xの値は: " & x
End Sub

複合代入演算子

複合代入演算子は、変数に対して演算を行った後、その結果を再び同じ変数に代入するために使用されます。残念ながらVBAで使用できる複合代入演算子ありません。

代入演算子は、変数に値を設定するための基本的なツールです。= を使用して基本的な代入を行い変数に対して演算を行った結果を再び同じ変数に代入することができます。これにより、コードをより簡潔に記述でき、計算結果の更新が容易になります。

記事